mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 23:06:49 +00:00
[357/906] x11: Don't crash when the X11 display is not available.
Error out cleanly instead of crashing when the X11 display can't be contacted.
This commit is contained in:
parent
3fbe0f0a98
commit
4ddbded3a8
1 changed files with 33 additions and 30 deletions
|
@ -102,7 +102,7 @@ gst_gl_window_finalize (GObject * object)
|
|||
g_mutex_lock (priv->x_lock);
|
||||
|
||||
priv->parent = 0;
|
||||
|
||||
if (priv->device) {
|
||||
XUnmapWindow (priv->device, priv->internal_win_id);
|
||||
|
||||
ret = glXMakeCurrent (priv->device, None, NULL);
|
||||
|
@ -114,9 +114,7 @@ gst_gl_window_finalize (GObject * object)
|
|||
XFree (priv->visual_info);
|
||||
|
||||
XReparentWindow (priv->device, priv->internal_win_id, priv->root, 0, 0);
|
||||
|
||||
XDestroyWindow (priv->device, priv->internal_win_id);
|
||||
|
||||
XSync (priv->device, FALSE);
|
||||
|
||||
while (XPending (priv->device))
|
||||
|
@ -137,10 +135,9 @@ gst_gl_window_finalize (GObject * object)
|
|||
//XCloseDisplay (priv->device);
|
||||
|
||||
g_debug ("display receiver closed\n");
|
||||
|
||||
XCloseDisplay (priv->disp_send);
|
||||
|
||||
g_debug ("display sender closed\n");
|
||||
}
|
||||
|
||||
if (priv->cond_send_message) {
|
||||
g_cond_free (priv->cond_send_message);
|
||||
|
@ -280,6 +277,8 @@ gst_gl_window_new (gint width, gint height, gulong external_gl_context)
|
|||
g_mutex_lock (priv->x_lock);
|
||||
|
||||
priv->device = XOpenDisplay (priv->display_name);
|
||||
if (priv->device == NULL)
|
||||
goto no_display;
|
||||
|
||||
XSynchronize (priv->device, FALSE);
|
||||
|
||||
|
@ -410,6 +409,10 @@ gst_gl_window_new (gint width, gint height, gulong external_gl_context)
|
|||
g_mutex_unlock (priv->x_lock);
|
||||
|
||||
return window;
|
||||
no_display:
|
||||
g_mutex_unlock (priv->x_lock);
|
||||
g_object_unref (window);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GQuark
|
||||
|
|
Loading…
Reference in a new issue