From a9e34ad8a88bed3de361d0b45f7e8b3ef6c1813f Mon Sep 17 00:00:00 2001 From: "kristof.nemere" Date: Fri, 28 Nov 2025 12:13:18 +0100 Subject: [PATCH] [MBL-19554] Fix video playback conflict in SpeedGrader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed issue where multiple MP4 videos played simultaneously when playing a video from submission and then a video from comments. Solution: Added ExoAgent.pauseAllOtherAgents() method that pauses all other playing videos when BaseViewMediaActivity resumes, ensuring only one video plays at a time. Test plan: - Play submission video, then play comment video - verify only comment video plays - Play comment video, then play submission video - verify only submission video plays - Play comment video, then play another comment video - verify only new video plays 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../pandautils/activities/BaseViewMediaActivity.kt | 3 +++ .../instructure/pandautils/utils/ExoPlayerHelper.kt | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt index 07732b7aaf..a89c1d4872 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt @@ -215,6 +215,9 @@ abstract class BaseViewMediaActivity : BaseCanvasActivity() { override fun onResume() { super.onResume() + // Pause all other playing videos to prevent multiple videos playing simultaneously + ExoAgent.pauseAllOtherAgents(mUri) + val fileFolderDeletedEvent = EventBus.getDefault().getStickyEvent(FileFolderDeletedEvent::class.java) if (fileFolderDeletedEvent != null) finish() diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt index 7182c16604..0286387dd1 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt @@ -251,5 +251,18 @@ class ExoAgent private constructor(val uri: Uri) { fun releaseAllAgents() { agentInstances.values.forEach { it.release() } } + + /** Pauses all agents except the one associated with the specified Uri */ + fun pauseAllOtherAgents(currentUri: Uri) { + agentInstances.forEach { (uriString, agent) -> + if (uriString != currentUri.toString()) { + agent.mPlayer?.let { + if (it.isPlaying) { + it.playWhenReady = false + } + } + } + } + } } }