Gstreamer waylandsink sometimes not showing.
My application (signage software) plays video using Gstreamer and waylandsink. For unknown reason, sometimes the waylandsink overlay does not show at all when the video starts, meaning that only whatever the application drew underneath the video area is visible. This happens in any Weston I have access to (weston 10 on drm, weston 12 nested on mutter/gnome), but not when the application directly runs on mutter or sway. To the software and logs it is completely invisible that the video overlay didn't show; from the logging it looks like gstreamer happily plays the video the same way.
The chance that a video starts with a missing overlay is high when the file is large, such as a 4k mp4 video. The host PC's performance probably also affects it. This very likely points to some race condition in my application that triggers this behaviour on Weston, but I can't find anything significant after being on this issue for days..
I found that when the issue occurs and the overlay is missing, any movement of the mouse will suddenly rectify the situation. I've tried adding gstreamer calls to force redraws (gst_overlay_video_expose), but that doesn't help and could be at the wrong layer to start with.
- How could I go about debugging this issue?
- What does a single pixel mouse move do to Weston that completely fixes the overlay?
- Is there a 'refresh' call that I can make that has the same effect?
I've distilled sections from two weston logs that do 'proto' logging of a good video start and a bad video start, and tried to compare them with meld. Unfortunately, I can't make much sense of the result, and am not even sure if wayland protocol logging would be useful at all.. I someone wants to have a look at those logs, I can attach them.