waylandsink: add some error handler for event dispatch

if wl client got last_error, wl_display_dispatch_queue_pending
will return -1, may lead to unhandled case, we should quit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9511>
This commit is contained in:
Qian Hu (胡骞) 2025-08-08 17:38:33 +08:00 committed by GStreamer Marge Bot
parent 42758aac2c
commit 9943a6082c

View File

@ -509,8 +509,12 @@ gst_wl_display_thread_run (gpointer data)
/* main loop */
while (1) {
g_rec_mutex_lock (&priv->sync_mutex);
while (wl_display_prepare_read_queue (priv->display, priv->queue) != 0)
wl_display_dispatch_queue_pending (priv->display, priv->queue);
while (wl_display_prepare_read_queue (priv->display, priv->queue) != 0) {
if (wl_display_dispatch_queue_pending (priv->display, priv->queue) == -1) {
g_rec_mutex_unlock (&priv->sync_mutex);
goto error;
}
}
g_rec_mutex_unlock (&priv->sync_mutex);
wl_display_flush (priv->display);
@ -526,7 +530,10 @@ gst_wl_display_thread_run (gpointer data)
goto error;
g_rec_mutex_lock (&priv->sync_mutex);
wl_display_dispatch_queue_pending (priv->display, priv->queue);
if (wl_display_dispatch_queue_pending (priv->display, priv->queue) == -1) {
g_rec_mutex_unlock (&priv->sync_mutex);
goto error;
}
g_rec_mutex_unlock (&priv->sync_mutex);
}