diff --git a/.gitignore b/.gitignore index b6aa5b83..12d9b7c2 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ MakeOut missing mkinstalldirs x11.pc +x11-xcb.pc *~ diff --git a/configure.ac b/configure.ac index 5f659901..d26bf0a4 100644 --- a/configure.ac +++ b/configure.ac @@ -442,7 +442,8 @@ AC_OUTPUT([Makefile nls/zh_TW/Makefile nls/zh_TW.big5/Makefile nls/zh_TW.UTF-8/Makefile - x11.pc]) + x11.pc + x11-xcb.pc]) echo "" echo "X11 will be built with the following settings:" diff --git a/src/ClDisplay.c b/src/ClDisplay.c index 3051d55a..97e4d43a 100644 --- a/src/ClDisplay.c +++ b/src/ClDisplay.c @@ -75,7 +75,7 @@ XCloseDisplay ( XSync(dpy, 1); } #if USE_XCB - xcb_disconnect(XGetXCBConnection(dpy)); + xcb_disconnect(dpy->xcl->connection); #else /* !USE_XCB */ _XDisconnectDisplay(dpy->trans_conn); #endif /* USE_XCB */ diff --git a/src/Makefile.am b/src/Makefile.am index 3c464709..6ab7412b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -345,6 +345,11 @@ libX11_la_SOURCES += \ xcl/xcblock.c \ xcl/display.c \ xcl/io.c + +lib_LTLIBRARIES += libX11-xcb.la +libX11_xcb_la_SOURCES = xcl/x11-xcb.c +libX11_xcb_la_LDFLAGS = -version-info 1:0:0 -no-undefined +libX11_xcb_la_LIBADD = libX11.la else libX11_la_SOURCES += \ ConnDis.c \ diff --git a/src/OpenDis.c b/src/OpenDis.c index c5c5557a..65f6eb80 100644 --- a/src/OpenDis.c +++ b/src/OpenDis.c @@ -363,7 +363,7 @@ XOpenDisplay ( #if USE_XCB { - const xcb_setup_t *xcbsetup = xcb_get_setup(XGetXCBConnection(dpy)); + const xcb_setup_t *xcbsetup = xcb_get_setup(dpy->xcl->connection); setuplength = xcbsetup->length << 2; memcpy(&prefix, xcbsetup, sizeof(prefix)); setup = (char *) xcbsetup; @@ -673,7 +673,7 @@ XOpenDisplay ( (void) XSynchronize(dpy, _Xdebug); #if USE_XCB - dpy->bigreq_size = xcb_get_maximum_request_length(XGetXCBConnection(dpy)); + dpy->bigreq_size = xcb_get_maximum_request_length(dpy->xcl->connection); if(dpy->bigreq_size <= dpy->max_request_size) dpy->bigreq_size = 0; #endif /* USE_XCB */ @@ -921,7 +921,7 @@ static void OutOfMemory (dpy, setup) char *setup; { #if USE_XCB - xcb_disconnect(XGetXCBConnection(dpy)); + xcb_disconnect(dpy->xcl->connection); #else /* !USE_XCB */ _XDisconnectDisplay (dpy->trans_conn); #endif /* USE_XCB */ diff --git a/src/xcl/display.c b/src/xcl/display.c index 81139886..51bc88fe 100644 --- a/src/xcl/display.c +++ b/src/xcl/display.c @@ -28,11 +28,6 @@ static void *alloc_copy(const void *src, int *dstn, size_t n) return dst; } -xcb_connection_t *XGetXCBConnection(Display *dpy) -{ - return dpy->xcl->connection; -} - void XSetAuthorization(char *name, int namelen, char *data, int datalen) { _XLockMutex(_Xglobal_lock); diff --git a/src/xcl/io.c b/src/xcl/io.c index 7c40b569..31f82e54 100644 --- a/src/xcl/io.c +++ b/src/xcl/io.c @@ -79,11 +79,6 @@ static void handle_event(Display *dpy, xcb_generic_event_t *e) free(e); } -void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner) -{ - dpy->xcl->event_owner = owner; -} - int _XEventsQueued(Display *dpy, int mode) { xcb_connection_t *c; diff --git a/src/xcl/x11-xcb.c b/src/xcl/x11-xcb.c new file mode 100644 index 00000000..88509200 --- /dev/null +++ b/src/xcl/x11-xcb.c @@ -0,0 +1,15 @@ +/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett + * This file is licensed under the MIT license. See the file COPYING. */ + +#include "Xlibint.h" +#include "xclint.h" + +xcb_connection_t *XGetXCBConnection(Display *dpy) +{ + return dpy->xcl->connection; +} + +void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner) +{ + dpy->xcl->event_owner = owner; +} diff --git a/x11-xcb.pc.in b/x11-xcb.pc.in new file mode 100644 index 00000000..315a9d17 --- /dev/null +++ b/x11-xcb.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: X11 XCB +Description: X Library XCB interface +Version: @PACKAGE_VERSION@ +Requires: x11 xcb +Cflags: -I${includedir} +Libs: -L${libdir} -lX11-xcb