fix(linux): stop the immersive view flashing and the motion cover failing on webkitgtk 2.54 - #791
Conversation
…ling on webkitgtk 2.54 Fedora's WebKitGTK 2.54 hands video frames through a DMA-BUF sink the page cannot read back, so the loop-frame copy failed four times a second (Cannot map External OES textures). Its video sink is switched to GL on Linux. The immersive view also opens without its fade there: a video mounting inside the animating full-window layer blacked the window out three times.
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: InstaZDLL/WaveFlow/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (4)
Included review availability: This review used your included allowance. 7 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 8 reviews per hour. 📝 WalkthroughWalkthroughSous Linux, la vue immersive s’ouvre sans fondu. ChangesLecture vidéo sous Linux
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to No actionable merge-blocking risk remains in the reviewed changes. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change preserves user-provided settings and does not show a new privilege or access boundary. Risk is limited mainly to compatibility uncertainty from changing the video backend for Linux launches; runtime behavior across supported WebKitGTK versions was not independently verified. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Found on Fedora 44 (WebKitGTK 2.54, Wayland, Iris Xe) with the native RPM. The AppImage, which ships an older WebKit, is not affected.
Symptoms
Cannot map External OES textures/failed to map video frame plane 0was logged four times a second while a motion cover played. Once, the cover stayed on WebKit's ▶ placeholder and never started.Causes, each isolated with a dedicated debug build on the machine
useLoopFrameHoldcopies the current frame into a<canvas>at eachtimeupdate, to hide the blank frame when a looping clip jumps back. WebKitGTK's DMA-BUF video sink hands out GL textures that cannot be mapped back, so every copy failed.WEBKIT_GST_DMABUF_SINK_DISABLED=1removed the errors and kept the copy working. There was no loop flash and no visible slowdown./usr/lib64/libwebkit2gtk-4.1.so.0.animate-fade-inruns.WEBKIT_DISABLE_DMABUF_RENDERER=1did remove the flash, but made the whole view lag and stretched the clip. So it is not used.Change
render_mode::applysetsWEBKIT_GST_DMABUF_SINK_DISABLED=1on Linux in every mode, unless the user already set it. This only affects the video sink; the page renderer keeps its DMA-BUF path.ImmersiveViewdropsanimate-fade-inon Linux (FADE_IN). The opaquebg-zinc-950still paints from the first frame.LINUXis exported fromusePlayableVideorather than detected a second time.ui.md, in the Linux video limits and in the transition notes.Verification
External OESlines (634 before).clippy --all-targetson Linux,cargo fmt,typecheck,eslintandprettierpass.Summary by CodeRabbit