Commit 4734d55b authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

XCB/GLX: check that GLX >= 1.2 is available on the server side

parent 325ad139
...@@ -142,6 +142,27 @@ FindWindow (vout_display_t *vd, xcb_connection_t *conn, ...@@ -142,6 +142,27 @@ FindWindow (vout_display_t *vd, xcb_connection_t *conn,
return screen; return screen;
} }
static bool CheckGLX (vout_display_t *vd, Display *dpy)
{
int major, minor;
bool ok = false;
if (!glXQueryVersion (dpy, &major, &minor))
msg_Dbg (vd, "GLX extension not available");
else
if (major != 1)
msg_Dbg (vd, "GLX extension version %d.%d unknown", major, minor);
else
if (minor < 2)
msg_Dbg (vd, "GLX extension version %d.%d too old", major, minor);
else
{
msg_Dbg (vd, "using GLX extension version %d.%d", major, minor);
ok = true;
}
return ok;
}
/** /**
* Probe the X server. * Probe the X server.
*/ */
...@@ -177,6 +198,9 @@ static int Open (vlc_object_t *obj) ...@@ -177,6 +198,9 @@ static int Open (vlc_object_t *obj)
sys->ctx = NULL; sys->ctx = NULL;
XSetEventQueueOwner (dpy, XCBOwnsEventQueue); XSetEventQueueOwner (dpy, XCBOwnsEventQueue);
if (!CheckGLX (vd, dpy))
goto error;
xcb_connection_t *conn = XGetXCBConnection (dpy); xcb_connection_t *conn = XGetXCBConnection (dpy);
assert (conn); assert (conn);
RegisterMouseEvents (obj, conn, sys->embed->xid); RegisterMouseEvents (obj, conn, sys->embed->xid);
...@@ -294,9 +318,11 @@ static void Close (vlc_object_t *obj) ...@@ -294,9 +318,11 @@ static void Close (vlc_object_t *obj)
if (sys->gl.sys != NULL) if (sys->gl.sys != NULL)
vout_display_opengl_Clean (&sys->vgl); vout_display_opengl_Clean (&sys->vgl);
glXMakeCurrent (dpy, 0, NULL);
if (sys->ctx != NULL) if (sys->ctx != NULL)
{
glXMakeCurrent (dpy, 0, NULL);
glXDestroyContext (dpy, sys->ctx); glXDestroyContext (dpy, sys->ctx);
}
XCloseDisplay (dpy); XCloseDisplay (dpy);
vout_display_DeleteWindow (vd, sys->embed); vout_display_DeleteWindow (vd, sys->embed);
free (sys); free (sys);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment