[macOS] new video layers are blank for first frame, visible during fullscreen transitions
Categories
(Core :: Graphics, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox124 | --- | fixed |
People
(Reporter: bradwerth, Assigned: bradwerth)
References
(Depends on 1 open bug)
Details
Attachments
(2 files)
As noted in Bug 1839425, and partially addressed there, macOS video layers sometimes are blanked out during a fullscreen transition. The core issue here is that a new AVSampleBufferDisplayLayer
video surface is added initially with no visible content, and the fullscreen transition will sometimes create a new video surface as part of its normal operation. Thus, macOS fullscreen transitions sometimes show a blank video element.
Possible fixes:
- Ensure that a new video surface has content before its first paint.
- Delay the fullscreen transition until the newly-created surfaces all have content.
- Don't resize the windowed content before transitioning to fullscreen -- the resizing sometimes causes the re-creation of the video layer. Not sure what to do on the way back from fullscreen.
Option 1 is the best option, but may run afoul of the the fundamental asynchronous update model of the video layers. I'll pursue that first as the most comprehensive solution to the problem, and if that option doesn't work, then I'll try one of the other options.
Assignee | ||
Comment 1•1 year ago
|
||
Assignee | ||
Comment 2•1 year ago
|
||
And another long-term option for fixing this:
- Make WebRender pass through some source key information for external textures, such that layer managers could detect when a layer is merely being resized/repositioned and not have to destroy and recreate a layer for the same source.
This option would generally cut down on the layer recreation labor, though it's probably true that transition to fullscreen is the most typical use case where an external texture would be resized, and that transition is not done with high frequency within the timeframe of a user session.
Comment 4•1 year ago
|
||
bugherder |
Updated•1 year ago
|
Description
•