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,
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.
*/
......@@ -177,6 +198,9 @@ static int Open (vlc_object_t *obj)
sys->ctx = NULL;
XSetEventQueueOwner (dpy, XCBOwnsEventQueue);
if (!CheckGLX (vd, dpy))
goto error;
xcb_connection_t *conn = XGetXCBConnection (dpy);
assert (conn);
RegisterMouseEvents (obj, conn, sys->embed->xid);
......@@ -294,9 +318,11 @@ static void Close (vlc_object_t *obj)
if (sys->gl.sys != NULL)
vout_display_opengl_Clean (&sys->vgl);
glXMakeCurrent (dpy, 0, NULL);
if (sys->ctx != NULL)
{
glXMakeCurrent (dpy, 0, NULL);
glXDestroyContext (dpy, sys->ctx);
}
XCloseDisplay (dpy);
vout_display_DeleteWindow (vd, sys->embed);
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