display_open(const char *name)
{
d_display_t *dpy = NULL;
- xcb_connection_t *conn;
+ xcb_connection_t *conn = NULL;
+ Display *xlib_dpy = NULL;
- conn = xcb_connect(name, NULL);
+ xlib_dpy = XOpenDisplay(name);
+ if (xlib_dpy) {
+ conn = XGetXCBConnection(xlib_dpy);
+
+ XSetEventQueueOwner(xlib_dpy, XCBOwnsEventQueue);
+ }
+
+ //conn = xcb_connect(name, NULL);
if (conn && !xcb_connection_has_error(conn)) {
dpy = malloc(sizeof(d_display_t));
dpy->conn = conn;
+ dpy->xlib_dpy = xlib_dpy;
dpy->ref = 1;
dpy->fd = xcb_get_file_descriptor(conn);
dpy->screens = list_new();
screen_unref(it->data);
list_unref(dpy->screens);
- xcb_disconnect(dpy->conn);
+ //xcb_disconnect(dpy->conn);
+ XCloseDisplay(dpy->xlib_dpy);
free(dpy);
}
}