[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:
Jan Schmidt 2009-07-13 12:52:31 +01:00 committed by Matthew Waters
parent 09a2e19512
commit b1dccdb13c

View file

@ -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