Skip to content

Commit 71f54c5

Browse files
committed
sync up with media3 patches
1 parent f37c463 commit 71f54c5

4 files changed

Lines changed: 16 additions & 28 deletions

File tree

app/src/main/java/org/akanework/gramophone/logic/GramophonePlaybackService.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,8 @@ class GramophonePlaybackService : MediaLibraryService(), MediaSessionService.Lis
695695

696696
override fun onPlaybackResumption(
697697
mediaSession: MediaSession,
698-
controller: MediaSession.ControllerInfo
698+
controller: MediaSession.ControllerInfo,
699+
isForPlayback: Boolean
699700
): ListenableFuture<MediaItemsWithStartPosition> {
700701
val settable = SettableFuture.create<MediaItemsWithStartPosition>()
701702
lastPlayedManager.restore { items, factory ->
@@ -708,11 +709,14 @@ class GramophonePlaybackService : MediaLibraryService(), MediaSessionService.Lis
708709
} else if (items.mediaItems.isNotEmpty()) {
709710
if (endedWorkaroundPlayer?.nextShuffleOrder != null)
710711
throw IllegalStateException("shuffleFactory was found orphaned")
711-
endedWorkaroundPlayer?.nextShuffleOrder = factory.toFactory()
712-
// This call will only sometimes set the playlist on our controller (it won't if
713-
// the system is just asking for the last played song for display purposes)
714-
settable.set(items)
715-
endedWorkaroundPlayer?.nextShuffleOrder = null
712+
if (isForPlayback) {
713+
endedWorkaroundPlayer?.nextShuffleOrder = factory.toFactory()
714+
settable.set(items)
715+
if (endedWorkaroundPlayer?.nextShuffleOrder != null)
716+
throw IllegalStateException("shuffleFactory was not consumed during resumption")
717+
} else {
718+
settable.set(items)
719+
}
716720
} else {
717721
settable.setException(
718722
IndexOutOfBoundsException(

app/src/main/java/org/akanework/gramophone/logic/utils/GramophoneShuffleOrder.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ class CircularShuffleOrder private constructor(
160160
.also { listener.onShuffleOrderChanged(it) }
161161
}
162162

163+
override fun cloneAndMove(indexFrom: Int, indexToExclusive: Int, newIndexFrom: Int): ShuffleOrder {
164+
return cloneAndRemove(indexFrom, indexToExclusive)
165+
.cloneAndInsert(newIndexFrom, indexToExclusive - indexFrom)
166+
}
167+
163168
override fun cloneAndClear(): ShuffleOrder {
164169
return cloneAndRemove(0, shuffled.size)
165170
}

app/src/main/java/org/akanework/gramophone/logic/utils/exoplayer/EndedWorkaroundPlayer.kt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -70,25 +70,4 @@ class EndedWorkaroundPlayer(player: ExoPlayer) : ForwardingPlayer(player), Playe
7070
fun onShuffleOrderChanged(shuffleOrder: CircularShuffleOrder) {
7171
this.shuffleOrder = shuffleOrder
7272
}
73-
74-
override fun moveMediaItems(fromIndex: Int, toIndex: Int, newIndex: Int) {
75-
super.moveMediaItems(fromIndex, toIndex, newIndex)
76-
try {
77-
shuffleOrder?.let {
78-
exoPlayer.setShuffleOrder(
79-
it.cloneAndRemove(fromIndex, toIndex)
80-
.cloneAndInsert(newIndex, toIndex - fromIndex)
81-
)
82-
}
83-
} catch (e: Exception) {
84-
Log.e(TAG, Log.getStackTraceString(e))
85-
throw e
86-
}
87-
}
88-
89-
override fun moveMediaItem(currentIndex: Int, newIndex: Int) {
90-
if (currentIndex != newIndex) {
91-
moveMediaItems(currentIndex, currentIndex + 1, newIndex)
92-
}
93-
}
9473
}

media3

Submodule media3 updated 190 files

0 commit comments

Comments
 (0)