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:
Alexander Capehart 2023-05-29 09:23:30 -06:00
parent bf40516ddd
commit 63f7627fbc
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
3 changed files with 27 additions and 3 deletions

View file

@ -240,24 +240,32 @@ constructor(
@Synchronized @Synchronized
override fun addUpdateListener(listener: MusicRepository.UpdateListener) { override fun addUpdateListener(listener: MusicRepository.UpdateListener) {
logD("Adding $listener to update listeners")
updateListeners.add(listener) updateListeners.add(listener)
listener.onMusicChanges(MusicRepository.Changes(deviceLibrary = true, userLibrary = true)) listener.onMusicChanges(MusicRepository.Changes(deviceLibrary = true, userLibrary = true))
} }
@Synchronized @Synchronized
override fun removeUpdateListener(listener: MusicRepository.UpdateListener) { 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 @Synchronized
override fun addIndexingListener(listener: MusicRepository.IndexingListener) { override fun addIndexingListener(listener: MusicRepository.IndexingListener) {
logD("Adding $listener to indexing listeners")
indexingListeners.add(listener) indexingListeners.add(listener)
listener.onIndexingStateChanged() listener.onIndexingStateChanged()
} }
@Synchronized @Synchronized
override fun removeIndexingListener(listener: MusicRepository.IndexingListener) { 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 @Synchronized
@ -266,6 +274,7 @@ constructor(
logW("Worker is already registered") logW("Worker is already registered")
return return
} }
logD("Registering worker $worker")
indexingWorker = worker indexingWorker = worker
if (indexingState == null) { if (indexingState == null) {
worker.requestIndex(true) worker.requestIndex(true)
@ -278,6 +287,7 @@ constructor(
logW("Given worker did not match current worker") logW("Given worker did not match current worker")
return return
} }
logD("Unregistering worker $worker")
indexingWorker = null indexingWorker = null
currentIndexingState = null currentIndexingState = null
} }

View file

@ -323,6 +323,7 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
@Synchronized @Synchronized
override fun addListener(listener: PlaybackStateManager.Listener) { override fun addListener(listener: PlaybackStateManager.Listener) {
logD("Adding $listener to listeners")
if (isInitialized) { if (isInitialized) {
listener.onNewPlayback(queue, parent) listener.onNewPlayback(queue, parent)
listener.onRepeatChanged(repeatMode) listener.onRepeatChanged(repeatMode)
@ -334,7 +335,10 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
@Synchronized @Synchronized
override fun removeListener(listener: PlaybackStateManager.Listener) { 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 @Synchronized
@ -344,6 +348,8 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
return return
} }
logD("Registering internal player $internalPlayer")
if (isInitialized) { if (isInitialized) {
internalPlayer.loadSong(queue.currentSong, playerState.isPlaying) internalPlayer.loadSong(queue.currentSong, playerState.isPlaying)
internalPlayer.seekTo(playerState.calculateElapsedPositionMs()) internalPlayer.seekTo(playerState.calculateElapsedPositionMs())
@ -363,6 +369,8 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
return return
} }
logD("Unregistering internal player $internalPlayer")
this.internalPlayer = null this.internalPlayer = null
} }

View file

@ -22,6 +22,7 @@ import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import org.oxycblt.auxio.util.logD
import org.oxycblt.auxio.util.logW import org.oxycblt.auxio.util.logW
import org.oxycblt.auxio.util.unlikelyToBeNull import org.oxycblt.auxio.util.unlikelyToBeNull
@ -73,15 +74,19 @@ interface Settings<L> {
override fun registerListener(listener: L) { override fun registerListener(listener: L) {
if (this.listener == null) { if (this.listener == null) {
// Registering a listener when it was null prior, attach the callback. // Registering a listener when it was null prior, attach the callback.
logD("Registering shared preference listener")
sharedPreferences.registerOnSharedPreferenceChangeListener(this) sharedPreferences.registerOnSharedPreferenceChangeListener(this)
} }
logD("Registering listener $listener")
this.listener = listener this.listener = listener
} }
override fun unregisterListener(listener: L) { override fun unregisterListener(listener: L) {
if (this.listener !== listener) { if (this.listener !== listener) {
logW("Given listener was not the current listener.") logW("Given listener was not the current listener.")
return
} }
logD("Unregistering listener $listener")
this.listener = null this.listener = null
// No longer have a listener, detach from the preferences instance. // No longer have a listener, detach from the preferences instance.
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
@ -92,6 +97,7 @@ interface Settings<L> {
key: String key: String
) { ) {
// FIXME: Settings initialization firing the listener. // FIXME: Settings initialization firing the listener.
logD("Dispatching settings change $key")
onSettingChanged(key, unlikelyToBeNull(listener)) onSettingChanged(key, unlikelyToBeNull(listener))
} }