From 63f7627fbca8a7789742178e4dd94e7c7cc92686 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Mon, 29 May 2023 09:23:30 -0600 Subject: [PATCH] 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. --- .../org/oxycblt/auxio/music/MusicRepository.kt | 14 ++++++++++++-- .../auxio/playback/state/PlaybackStateManager.kt | 10 +++++++++- .../java/org/oxycblt/auxio/settings/Settings.kt | 6 ++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt index e9ceb9f68..c88eaaf14 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicRepository.kt @@ -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 } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index 501cf03d9..58c0e6ed8 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -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 } diff --git a/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt b/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt index 36594b2de..947362fe7 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/Settings.kt @@ -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 { 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 { key: String ) { // FIXME: Settings initialization firing the listener. + logD("Dispatching settings change $key") onSettingChanged(key, unlikelyToBeNull(listener)) }