Prevent Video Player Pausing During Screen Rotation and Fullscreen Transitions on iOS#89
Merged
kdroidFilter merged 5 commits intomasterfrom Jul 29, 2025
Conversation
Enhanced resource cleanup during disposal to ensure synchronous and safe operations. Introduced an `isDisposing` flag to prevent redundant calls and race conditions. Improved coroutine handling, added checks to avoid processing during disposal, and centralized resource cleanup logic.
Introduced an `onReset` callback to ensure proper resource cleanup by nullifying the player instance when the view is recycled in a LazyList.
…rSaveable` in `VideoPlayerSurface` and synchronize with `playerState`.
… to track playback time
Adjusted `VideoPlayerSurface` logic to avoid pausing the video player during screen rotations or entering fullscreen mode. Updated `pauseOnDispose` handling and player configuration to ensure smoother transitions, while maintaining proper cleanup and state management.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Prevent Video Player Pausing During Screen Rotation and Fullscreen Transitions
Problem
The video player was pausing unexpectedly when:
This created a disruptive user experience as playback would stop and require manual restarting after these common UI transitions.
Solution
I implemented a solution that prevents the player from pausing during these transitions while maintaining the existing behavior for other scenarios:
pauseOnDisposeparameter toVideoPlayerSurfaceImplfunction (defaulting totruefor backward compatibility)DisposableEffectinVideoPlayerSurface.ios.ktto only pause the player ifpauseOnDisposeis truepauseOnDisposetofalsein the mainVideoPlayerSurfacefunction to handle rotationpauseOnDisposetofalsein the fullscreen transition to handle fullscreen modeImplementation Details
The core of the fix is in
VideoPlayerSurface.ios.kt, where we now conditionally pause the player when the view is disposed:Testing
The changes were tested on iOS devices with:
The player now continues playback smoothly during these transitions without interruption.
Considerations