Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
gl/dispmanx: fix deadlock triggered by
set_render_rectangle
When the gstglimagesink is started with the option `glimagesink render-rectangle="<0,0,1920,1080>"`, the pipeline reaches a deadlock. The reason the deadlock occurs is that the `gst_gl_window_set_render_rectangle` takes locks on the window, in addition it calls `window_class->set_render_rectangle(...)` which executes the `_on_resize` function. Since the `_on_resize` function also takes locks on the window the deadlock is achieved. By scheduling the adjustment of the render rectangle through an async message for `gst_gl_window_dispmanx_set_render_rectangle`, the actual resize happens in another context and therefore doesn't suffers from the lock taken in `gst_gl_window_set_render_rectangle`. This solution follows the same approach as gl/wayland. The problem was introduced by b887db1. For the full discussion check #849. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1030>
- Loading branch information