Skip to content

Conversation

@andrichjakov
Copy link

This updates the video rendering loop in VLCOpenGLES2VideoView to use
kCFRunLoopCommonMode instead of kCFRunLoopDefaultMode.

Why this change is needed:

Using CADisplayLink with the default run loop mode causes frame updates to pause during common UI interactions, such as pulling down the control center.

This results in frozen video even though audio continues normally.

What the change does

Using kCFRunLoopCommonMode ensures frame updates even when the player is not in focus.
This matches the behavior used by Apple in AVPlayer.

Testing

Tested on:
• iOS 26
• iPhone 15

Verified:
• No more rendering stalls
• No negative impact on CPU usage

@fkuehne
Copy link
Contributor

fkuehne commented Nov 23, 2025

Thanks a lot for this very nice improvement. Based on Apple's public documentation, this is impossible to get right!

I added your commit as a merge request on our gitlab along with your documentation and authorship: https://code.videolan.org/videolan/vlc/-/merge_requests/8078

@fkuehne fkuehne closed this Nov 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants