Saturday, 2026-10-31

Mister_Magisterabranson: per gstreamer's AGENTS.md i had to first comprehend entire issue and now I fully and utterly comprehend the issue i believe and the fix has to go upstream but might also need minor tweaking in qtwayland00:36
Mister_Magisterabranson: also I've concluded i'm in no way qualified to CR/fix it either so i've asked gstreamer guys00:59
Mister_MagisterI've caught great asset in form of gstreamer dev into my sfos chat >:)00:59
Mister_Magisterthe proper description without llm garbage is *atchoo* The issue is with EGL context invalidation of the context that comes from Qt via qmlglsink. Let me explain. Gstreamer in no way is prepared for qt to get rid of its egl context. The pipeline caches it, the element cache it, and there's no way to send signal to the pipeline to make everything invalidate the context and fetch new one. And that problem probably has never ever arisen before00:59
Mister_Magisterbecause to the best of my knowledge desktop has no reason to throw away egl context. SFOS does so when you turn the screen off (mostlikely because it shuts down the GPU) and when screen comes back on the qt has new egl context but the pipeline/qmlglsink/glupload/glcolorconvert don't get new one and the video stays forever black (thats the actual bug) because it's writing to old context, egl doesn't throw any error by design and video is00:59
Mister_Magisterforever black. Now the solution that claude implemented is to listen to the aboutToBeDestroyed signal and set flag so that on next frame (because the context is still old when the signal arrives) fetch new context, walk up to the root of the pipeline and set new context using gst_element_set_context + minor fixes because glupload/glcolorconvert won't do anything with it because they react only if display changed and don't care if context00:59
Mister_Magisterchanged00:59
Mister_MagisterMy head hurts01:00
*** n2klb_ is now known as n2klb02:39
Mister_Magisterso the same issue exists on android… great03:16
Mister_Magisterabranson: i got the answer i got the solution!!! The solution is… THERE IS NONE03:17
Mister_MagisterI apparently have to recreate pipeline elements03:18
Mister_Magisterbecause actual solution is difficult03:18
Mister_Magisterabranson: after talking to gstreamer guy I might implement same per-app workaround he implemented for android04:12
Mister_Magisterbasicially swap qmlglsink to fakesink -> recreate QtGLVideoItem because it holds cached egl sink (just recreating pipeline elements would just pull cached context from it so there's no point -> recreate pipeline elements -> swap back to qmlglsink04:12
Mister_Magisterabranson: hey at least now i can precisely explain to you why the fix belongs to gstreamer and why it has literally nothign to do with qtwayland04:26
Mister_Magisterand it's entirely gstreamer issue04:26
Mister_Magisterand yes we're both unqualified becuase even gstreamer devs have no clue what the proper fix is04:27
Mister_Magisterabranson: i'll mostlikely save you the hussle and craete issue upstream while implementing workaround in my app that way everyone is happy, gstreamer might fix it, sfos might get the fix in the future and i get the app working asap04:32
Mister_Magisterabranson: but you gotta merge this https://github.com/abranson/qtwayland/commits/event-thread/04:34
Mister_Magistereverything else is fine04:35
Mister_Magisteri just need this04:35

Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!