#include <assert.h>
#include <xcb/xcb.h>
-#include <X11/Xlib-xcb.h>
#include <GL/glx.h>
#include <GL/glxext.h>
}
/* Connect to X server */
+ xcb_connection_t *conn = xcb_connect (sys->embed->display.x11, NULL);
+ if (unlikely(xcb_connection_has_error (conn)))
+ {
+ vout_display_DeleteWindow (vd, sys->embed);
+ free (sys);
+ return VLC_EGENERIC;
+ }
+
Display *dpy = XOpenDisplay (sys->embed->display.x11);
if (dpy == NULL)
{
+ xcb_disconnect (conn);
vout_display_DeleteWindow (vd, sys->embed);
free (sys);
return VLC_EGENERIC;
}
sys->display = dpy;
+ sys->conn = conn;
sys->ctx = NULL;
- XSetEventQueueOwner (dpy, XCBOwnsEventQueue);
if (!CheckGLX (vd, dpy, &sys->v1_3))
goto error;
- xcb_connection_t *conn = XGetXCBConnection (dpy);
- assert (conn != NULL);
- sys->conn = conn;
RegisterMouseEvents (obj, conn, sys->embed->handle.xid);
/* Find window parameters */
GLXFBConfig *confs = glXChooseFBConfig (dpy, snum, attr, &nelem);
if (confs == NULL)
{
- msg_Err (vd, "no GLX frame bufer configurations");
+ msg_Err (vd, "no GLX frame buffer configurations");
goto error;
}
if (HasExtension (glx_extensions, "GLX_EXT_swap_control")) {
PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT = (PFNGLXSWAPINTERVALEXTPROC)GetProcAddress (NULL, "glXSwapIntervalEXT");
if (!is_swap_interval_set && SwapIntervalEXT)
- is_swap_interval_set = !SwapIntervalEXT (dpy, sys->glwin, 1);
+ {
+ SwapIntervalEXT (dpy, sys->glwin, 1);
+ is_swap_interval_set = true;
+ }
}
#endif
if (sys->v1_3)
glXDestroyWindow (dpy, sys->glwin);
}
+ XCloseDisplay (dpy);
/* show the default cursor */
xcb_change_window_attributes (sys->conn, sys->embed->handle.xid,
XCB_CW_CURSOR, &(uint32_t) { XCB_CURSOR_NONE });
xcb_flush (sys->conn);
+ xcb_disconnect (sys->conn);
- XCloseDisplay (dpy);
vout_display_DeleteWindow (vd, sys->embed);
free (sys);
}