[Android] VideoPlayer: fix wrong index when starting cast

Duncan McNamara git at videolan.org
Tue Apr 1 05:24:18 UTC 2025


vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Mon Mar 31 18:25:13 2025 +0200| [bc0818e98e1b51b12b4f0dabe3a9648355e00abe] | committer: Nicolas Pomepuy

VideoPlayer: fix wrong index when starting cast

In onSaveInstanceState, without a currentMediaList we would default to
savedMediaList, but without a currentIndex, we would default to 0 and
not to savedMediaIndex.
When restarting the videoplayer, we do have a savedInstanceState in the
on create that is used to reload the previous medialist, but it only
reloaded 0.

> https://code.videolan.org/videolan/vlc-android/commit/bc0818e98e1b51b12b4f0dabe3a9648355e00abe
---

 .../src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt          | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
index 795e4830aa..b0bd67ccde 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
@@ -820,7 +820,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
             if (playlistModel == null) outState.putParcelable(KEY_URI, videoUri)
         }
         val mediaList = service?.playlistManager?.getMediaList() ?: savedMediaList
-        val mediaIndex = service?.playlistManager?.currentIndex ?: 0
+        val mediaIndex = service?.playlistManager?.currentIndex ?: savedMediaIndex
         if (mediaList != null) {
             outState.putParcelableArrayList(KEY_MEDIA_LIST, ArrayList(mediaList))
             outState.putInt(KEY_MEDIA_INDEX, mediaIndex)
@@ -960,8 +960,9 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
     @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     override fun onStop() {
         super.onStop()
-        service?.playlistManager?.getMediaList()?.let {
-            savedMediaList = ArrayList(it)
+        service?.playlistManager?.let {
+            savedMediaList = ArrayList(it.getMediaList())
+            savedMediaIndex = it.currentIndex
         }
         startedScope.cancel()
         LocalBroadcastManager.getInstance(this).unregisterReceiver(serviceReceiver)



More information about the Android mailing list