all: log listener additions
Log whenever a listener is added/removed. This might make it easier to track concurrency issues stemming from listener dispatch and addition occuring at the same time.
This commit is contained in:
parent
bf40516ddd
commit
63f7627fbc
3 changed files with 27 additions and 3 deletions
|
@ -240,24 +240,32 @@ constructor(
|
|||
|
||||
@Synchronized
|
||||
override fun addUpdateListener(listener: MusicRepository.UpdateListener) {
|
||||
logD("Adding $listener to update listeners")
|
||||
updateListeners.add(listener)
|
||||
listener.onMusicChanges(MusicRepository.Changes(deviceLibrary = true, userLibrary = true))
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun removeUpdateListener(listener: MusicRepository.UpdateListener) {
|
||||
updateListeners.remove(listener)
|
||||
logD("Removing $listener to update listeners")
|
||||
if (!updateListeners.remove(listener)) {
|
||||
logW("Update listener $listener was not added prior, cannot remove")
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun addIndexingListener(listener: MusicRepository.IndexingListener) {
|
||||
logD("Adding $listener to indexing listeners")
|
||||
indexingListeners.add(listener)
|
||||
listener.onIndexingStateChanged()
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun removeIndexingListener(listener: MusicRepository.IndexingListener) {
|
||||
indexingListeners.remove(listener)
|
||||
logD("Removing $listener from indexing listeners")
|
||||
if (!indexingListeners.remove(listener)) {
|
||||
logW("Indexing listener $listener was not added prior, cannot remove")
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
@ -266,6 +274,7 @@ constructor(
|
|||
logW("Worker is already registered")
|
||||
return
|
||||
}
|
||||
logD("Registering worker $worker")
|
||||
indexingWorker = worker
|
||||
if (indexingState == null) {
|
||||
worker.requestIndex(true)
|
||||
|
@ -278,6 +287,7 @@ constructor(
|
|||
logW("Given worker did not match current worker")
|
||||
return
|
||||
}
|
||||
logD("Unregistering worker $worker")
|
||||
indexingWorker = null
|
||||
currentIndexingState = null
|
||||
}
|
||||
|
|
|
@ -323,6 +323,7 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
|
||||
@Synchronized
|
||||
override fun addListener(listener: PlaybackStateManager.Listener) {
|
||||
logD("Adding $listener to listeners")
|
||||
if (isInitialized) {
|
||||
listener.onNewPlayback(queue, parent)
|
||||
listener.onRepeatChanged(repeatMode)
|
||||
|
@ -334,7 +335,10 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
|
||||
@Synchronized
|
||||
override fun removeListener(listener: PlaybackStateManager.Listener) {
|
||||
listeners.remove(listener)
|
||||
logD("Removing $listener from listeners")
|
||||
if (!listeners.remove(listener)) {
|
||||
logW("Listener $listener was not added prior, cannot remove")
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
@ -344,6 +348,8 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
return
|
||||
}
|
||||
|
||||
logD("Registering internal player $internalPlayer")
|
||||
|
||||
if (isInitialized) {
|
||||
internalPlayer.loadSong(queue.currentSong, playerState.isPlaying)
|
||||
internalPlayer.seekTo(playerState.calculateElapsedPositionMs())
|
||||
|
@ -363,6 +369,8 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
return
|
||||
}
|
||||
|
||||
logD("Unregistering internal player $internalPlayer")
|
||||
|
||||
this.internalPlayer = null
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ import android.content.Context
|
|||
import android.content.SharedPreferences
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.preference.PreferenceManager
|
||||
import org.oxycblt.auxio.util.logD
|
||||
import org.oxycblt.auxio.util.logW
|
||||
import org.oxycblt.auxio.util.unlikelyToBeNull
|
||||
|
||||
|
@ -73,15 +74,19 @@ interface Settings<L> {
|
|||
override fun registerListener(listener: L) {
|
||||
if (this.listener == null) {
|
||||
// Registering a listener when it was null prior, attach the callback.
|
||||
logD("Registering shared preference listener")
|
||||
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
|
||||
}
|
||||
logD("Registering listener $listener")
|
||||
this.listener = listener
|
||||
}
|
||||
|
||||
override fun unregisterListener(listener: L) {
|
||||
if (this.listener !== listener) {
|
||||
logW("Given listener was not the current listener.")
|
||||
return
|
||||
}
|
||||
logD("Unregistering listener $listener")
|
||||
this.listener = null
|
||||
// No longer have a listener, detach from the preferences instance.
|
||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
|
||||
|
@ -92,6 +97,7 @@ interface Settings<L> {
|
|||
key: String
|
||||
) {
|
||||
// FIXME: Settings initialization firing the listener.
|
||||
logD("Dispatching settings change $key")
|
||||
onSettingChanged(key, unlikelyToBeNull(listener))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue