playback: make state db sync
Add synchronized calls to PlaybackStateDatabase to resolve future race conditions.
This commit is contained in:
parent
d5c0ccfce0
commit
149da883fe
2 changed files with 26 additions and 25 deletions
|
@ -188,33 +188,35 @@ class PlaybackStateDatabase(context: Context) :
|
||||||
fun write(state: SavedState) {
|
fun write(state: SavedState) {
|
||||||
requireBackgroundThread()
|
requireBackgroundThread()
|
||||||
|
|
||||||
val song = state.queue.getOrNull(state.index)
|
synchronized(this) {
|
||||||
|
val song = state.queue.getOrNull(state.index)
|
||||||
|
|
||||||
if (song != null) {
|
if (song != null) {
|
||||||
val rawState =
|
val rawState =
|
||||||
RawState(
|
RawState(
|
||||||
index = state.index,
|
index = state.index,
|
||||||
positionMs = state.positionMs,
|
positionMs = state.positionMs,
|
||||||
repeatMode = state.repeatMode,
|
repeatMode = state.repeatMode,
|
||||||
isShuffled = state.isShuffled,
|
isShuffled = state.isShuffled,
|
||||||
songId = song.id,
|
songId = song.id,
|
||||||
parentId = state.parent?.id,
|
parentId = state.parent?.id,
|
||||||
playbackMode =
|
playbackMode =
|
||||||
when (state.parent) {
|
when (state.parent) {
|
||||||
null -> PlaybackMode.ALL_SONGS
|
null -> PlaybackMode.ALL_SONGS
|
||||||
is Album -> PlaybackMode.IN_ALBUM
|
is Album -> PlaybackMode.IN_ALBUM
|
||||||
is Artist -> PlaybackMode.IN_ARTIST
|
is Artist -> PlaybackMode.IN_ARTIST
|
||||||
is Genre -> PlaybackMode.IN_GENRE
|
is Genre -> PlaybackMode.IN_GENRE
|
||||||
})
|
})
|
||||||
|
|
||||||
writeRawState(rawState)
|
writeRawState(rawState)
|
||||||
writeQueue(state.queue)
|
writeQueue(state.queue)
|
||||||
} else {
|
} else {
|
||||||
writeRawState(null)
|
writeRawState(null)
|
||||||
writeQueue(null)
|
writeQueue(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
logD("Wrote state to database")
|
||||||
}
|
}
|
||||||
|
|
||||||
logD("Wrote state to database")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun writeRawState(rawState: RawState?) {
|
private fun writeRawState(rawState: RawState?) {
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
app:liftOnScroll="true"
|
app:liftOnScroll="true"
|
||||||
app:liftOnScrollTargetViewId="@id/detail_recycler">
|
app:liftOnScrollTargetViewId="@id/detail_recycler">
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
android:id="@+id/detail_toolbar"
|
android:id="@+id/detail_toolbar"
|
||||||
style="@style/Widget.Auxio.Toolbar.Icon.Actions" />
|
style="@style/Widget.Auxio.Toolbar.Icon.Actions" />
|
||||||
|
|
Loading…
Reference in a new issue