[Android] Fix the resume playback dialog shown multiple times

Nicolas Pomepuy git at videolan.org
Fri Feb 28 10:06:25 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Feb 27 11:49:00 2025 +0100| [affdab60358ea16a0e35db6a2270938d39472921] | committer: Nicolas Pomepuy

Fix the resume playback dialog shown multiple times

Fixes #3152

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

 .../src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 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 9b95294666..fb06acd5f5 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
@@ -187,7 +187,6 @@ import org.videolan.vlc.gui.audio.EqualizerFragment
 import org.videolan.vlc.gui.audio.PlaylistAdapter
 import org.videolan.vlc.gui.browser.EXTRA_MRL
 import org.videolan.vlc.gui.dialogs.CONFIRM_BOOKMARK_RENAME_DIALOG_RESULT
-import org.videolan.vlc.gui.dialogs.CONFIRM_RENAME_DIALOG_RESULT
 import org.videolan.vlc.gui.dialogs.PlaybackSpeedDialog
 import org.videolan.vlc.gui.dialogs.RENAME_DIALOG_MEDIA
 import org.videolan.vlc.gui.dialogs.RENAME_DIALOG_NEW_NAME
@@ -274,6 +273,12 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
 
     lateinit var windowLayoutInfo: WindowLayoutInfo
     private var currentConfirmationDialog: AlertDialog? = null
+    val resumeDialogObserver: (t: WaitConfirmation?) -> Unit = {
+        if (it != null)
+            showConfirmResumeDialog(it)
+        else
+            currentConfirmationDialog?.dismiss()
+    }
 
     /**
      * For uninterrupted switching between audio and video mode
@@ -2503,15 +2508,11 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
                 if (volSave > 100 && service.volume != volSave) service.setVolume(volSave)
             }
             service.addCallback(this)
-            service.playlistManager.waitForConfirmation.observe(this) {
-                if (it != null)
-                    showConfirmResumeDialog(it)
-                else
-                    currentConfirmationDialog?.dismiss()
-            }
+            service.playlistManager.waitForConfirmation.observe(this, resumeDialogObserver)
             //if (isTalkbackIsEnabled()) overlayDelegate.showOverlayTimeout(OVERLAY_INFINITE)
         } else if (this.service != null) {
             this.service?.removeCallback(this)
+            this.service?.playlistManager?.waitForConfirmation?.removeObserver(resumeDialogObserver)
             this.service = null
             handler.sendEmptyMessage(AUDIO_SERVICE_CONNECTION_FAILED)
             removeDownloadedSubtitlesObserver()



More information about the Android mailing list