waylandsink: race condition in multi-thread env
Hi, I'm trying to make a Wayland client application which runs multiple GStreamer pipelines. The main thread creates wl_display and pipelines that including waylandSink. All of the waylandSink uses the wl_display created by the main thread. In this circumstances, it seems that one of the thread tries to access another thread's event_queue.
I found some patches on Mesa that it gives ideas how to prevent these race cases. mesa/mesa@36b9976e mesa/mesa@03dd9a88
To avoid this race condition Wayland 1.11 introduced new API that allows creating a proxy wrapper and I applied it(!74 (merged)). It might have been a little better but It's still vulnerable, so now I'm a bit confusing it's Wayland or gstWaylandSink issue. Anyway, I'll keep debugging where's the rest of the race conditions. If you have any pieces of advice or there was anything wrong in my approach, please let me know :)
I attached simple test application what I've used to reproduce this condition. (mr !74 (merged))
- tested on master branch of gst-plugins-bad / weston 5.0.9 (master)