diff --git a/.gitignore b/.gitignore index b6aa5b83..3a3c8a5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ aclocal.m4 autom4te.cache +ChangeLog compile config.guess config.log @@ -16,4 +17,6 @@ MakeOut missing mkinstalldirs x11.pc +x11-xcb.pc *~ +libX11-* diff --git a/AUTHORS b/AUTHORS index d474ecae..4f598502 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,6 +4,9 @@ Corporation (now part of HP). Warren Turkal did the autotooling in October, 2003. +Josh Triplett, Jamey Sharp, and the XCB team (xcb@lists.freedesktop.org) +maintain the XCB support. + Individual deveopers include (in no particular order): Sebastien Marineau, Holger Veit, Bruno Haible, Keith Packard, Bob Scheifler, Takashi Fujiwara, Kazunori Nishihara, Hideki Hiura, Hiroyuki Miyamoto, diff --git a/Makefile.am b/Makefile.am index 27efe8da..944aaa0c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,15 +7,18 @@ SUBDIRS=include $(ORDER) nls man pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = x11.pc +if XCB +pkgconfig_DATA += x11-xcb.pc +endif -EXTRA_DIST=x11.pc.in ChangeLog +EXTRA_DIST=x11.pc.in x11-xcb.pc.in ChangeLog autogen.sh -CLEANFILES=ChangeLog +MAINTAINERCLEANFILES=ChangeLog .PHONY: ChangeLog ChangeLog: - GIT_DIR=${srcdir}/.git git-log > ChangeLog + (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2) dist-hook: ChangeLog diff --git a/NEWS b/NEWS index 04290c99..9ac5fc22 100644 --- a/NEWS +++ b/NEWS @@ -1,2 +1,113 @@ -Xlib is autotooled! +Version 1.1.1 - 2006-11-30 +The "xcompmgr is hard, let's go releasing" release + +* Fix Bug #9154 and friends, to unbreak xcompmgr: + Always process an event for _XReadEvents, even if an error occurs. + Previously, process_responses (in the wait_for_first_event case called + from _XReadEvents) considered any return from xcb_wait_for_event + sufficient to think it had processed an event. If xcb_wait_for_event + returned an error, and no more events occurred before process_responses + called xcb_poll_for_event, process_responses would try to return with + dpy->head NULL, and would fail an assertion for the _XReadEvents + postcondition. Now, process_responses continues using xcb_wait_for_event + until it gets an event. + +* Bug #9153: Fix access to freed memory. + The fix for bug #8622 introduced a smaller bug where _XReply would + read memory shortly after freeing it. This patch caches the needed + value in a stack-allocated variable before the heap-allocated memory + is freed. + +* libx11 doesn't use inputproto in public headers; don't require it in x11.pc. + Based on a Debian patch. + +* Debian bug #354315: Clarify return value in XGetWindowAttributes man page. + Patch by Debian user Ross Combs. + + +Version 1.1 - 2006-11-23 + +* Add note in man-page that XListFontsWithInfo is not thread-safe. _XReply + drops the Display lock, so the value of dpy->request may change before + _XReply is called again. Jamey Sharp discovered this by inspection a few + years ago. + +* Fix Bug #8622, by fixing the response processing order for threaded apps. + process_responses (the common code for _XReply, _XReadEvents, and + _XEventsQueued) now handles responses in order, by adding condition variables + to the list of outstanding requests in dpy->xcb->pending_requests, and + blocking on them when those requests should get processed, to allow _XReply + to process them; if actually called from _XReply, it returns when _XReply's + request should get processed. _XReply broadcasts on its condition variable + after it has read its reply and re-acquired the display lock. + +* Don't hold the display lock around callbacks to the application. This avoids + recursive locking of the display lock (which triggers an XCB locking + assertion), particularly with emacs. + +* Add xcb-xlib dependency to x11.pc when built against XCB. + +* Allocate the right amount of memory for dpy->lock_fns. Fixes a crash on + startup with gdk. + + +Version 1.1 RC2 - 2006-11-02 + +Benno Schulenberg: + nls: remove duplicate compose entries (bug #2286) + nls: remove shadowed compose entries (bug #2286) + nls (en_US): remove long compositions that override shorter (bug #2286) + +Caolan McNamara: + XKB geometry: fix leaks in GetKeyboardByName (bug #8099) + +David Nusinow: + Dynamically generate internal manpage section using __libmanpagesuffix__ so that it actually matches the section if you don't use 3X11 + +Jamey Sharp: + Add correct Display locking to XKB functions. + XKB bugfix: SyncHandle must be called after UnlockDisplay, not before. + XCB: check for and handle I/O errors in _XGetXCBBuffer. + +Matthias Hopf: + Fix double open of compose file. + + +Version 1.1 RC1 - 2006-10-06 + +This release includes the Xlib/XCB work, which uses XCB as the Xlib transport +layer, and allows a client to use both Xlib and XCB on the same connection. +This allows clients to transition from Xlib to XCB incrementally. + +Clients which link only to libX11, and do not use XCB, should not notice any +differences in this release. Clients desiring XCB interoperability should +additionally #include , link to libX11-xcb, use +XGetXCBConnection(dpy) to obtain the underlying XCB connection, and then use +XCB functions directly on that connection. + +Note that while a client can issue requests and handle their replies or errors +with either Xlib or XCB, only one can own and handle the event queue. By +default, Xlib must own the event queue, for compatibility with legacy Xlib +clients. Clients can use the function XSetEventQueueOwner immediately after +XOpenDisplay to let XCB own the event queue instead. Clients may not call +this function after processing any responses, as this will potentially lose +responses. + +We expect to have an RC2 release corresponding to the Xorg RC2 schedule, which +should include additional internal architecture enhancements, but no +user-visible changes. 1.0 final should match RC2. + +Other smaller changes in this release: +* correct ChangeLog generation +* support running lint and sparse +* Autoconf 2.60 +* fix man page for XUrgencyHint +* improve man pages for XGrabButton, XGrabKey, XGetWindowProperty +* new locales: as_IN.UTF-8, kn_IN.UTF-8, ml_IN.UTF-8, or_IN.UTF-8, + te_IN.UTF-8, ur_IN.UTF-8 +* on systems with both UNIXCONN and LOCALCONN, try unix if local fails +* fix sparse warnings +* ansify static functions + +-- Josh Triplett , Jamey Sharp diff --git a/README b/README index f609b2f5..f9b59d4e 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ #define S(x, y) y##x -Please contact S(south.rr.com, wt@mid, and jim.gettys@hp.com) before doing +Please contact S(south.rr.com, wt@mid) and jim.gettys@hp.com before doing any commits on this module. This is the libX11 from XFree86. diff --git a/configure.ac b/configure.ac index 24d53e31..457a5d4d 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ(2.57) AC_INIT([libX11], - 1.0.99.0, + 1.1.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libX11) AC_CONFIG_SRCDIR([Makefile.am]) @@ -20,7 +20,7 @@ AC_PROG_CC XORG_PROG_RAWCPP -# Build XCL? or traditional Xlib? +# Build with XCB support? AC_ARG_WITH(xcb, AC_HELP_STRING([--with-xcb], [use XCB for low-level protocol implementation]), [ac_cv_use_xcb=$withval], [ac_cv_use_xcb=yes]) @@ -39,12 +39,13 @@ no) AC_DEFINE(USE_XCB, 0, [Use XCB for low-level protocol implementation]) ;; *) - X11_REQUIRES="xcb-xlib" + X11_REQUIRES="xcb-xlib >= 0.9.92" + X11_EXTRA_DEPS="xcb-xlib" xdmauth="no" # XCB handles all auth - AC_CHECK_HEADERS([features.h]) AC_DEFINE(USE_XCB, 1, [Use XCB for low-level protocol implementation]) ;; esac +AC_SUBST(X11_EXTRA_DEPS) PKG_CHECK_MODULES(X11, xextproto xtrans $X11_REQUIRES) dnl Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro @@ -296,8 +297,8 @@ AM_CONDITIONAL(MANPAGES, [ test x$LIBMAN '!=' xno ]) AM_CONDITIONAL(XKB, [ test x$XKB = xyes ]) if test x"$XKB" = "xyes"; then - XKBPROTO_REQUIRES="kbproto inputproto" - PKG_CHECK_MODULES(XKBPROTO, $XKBPROTO_REQUIRES) + XKBPROTO_REQUIRES="kbproto" + PKG_CHECK_MODULES(XKBPROTO, kbproto inputproto) AC_DEFINE(XKB,1,[Use XKB]) X11_CFLAGS="$X11_CFLAGS $XKBPROTO_CFLAGS" X11_LIBS="$X11_LIBS $XKBPROTO_LIBS" @@ -446,7 +447,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/include/Makefile.am b/include/Makefile.am index 97932084..c5cdb4ff 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -16,5 +16,5 @@ EXTRA_DIST=\ X11/XlibConf.h.in if XCB -x11include_HEADERS += X11/xcl.h +x11include_HEADERS += X11/Xlib-xcb.h endif diff --git a/include/X11/Xlib-xcb.h b/include/X11/Xlib-xcb.h new file mode 100644 index 00000000..b88e2e7a --- /dev/null +++ b/include/X11/Xlib-xcb.h @@ -0,0 +1,15 @@ +/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett + * This file is licensed under the MIT license. See the file COPYING. */ + +#ifndef XLIB_XCB_H +#define XLIB_XCB_H + +#include +#include + +xcb_connection_t *XGetXCBConnection(Display *dpy); + +enum XEventQueueOwner { XlibOwnsEventQueue = 0, XCBOwnsEventQueue }; +void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner); + +#endif /* XLIB_XCB_H */ diff --git a/include/X11/Xlibint.h b/include/X11/Xlibint.h index a3e3ebfb..8aab764a 100644 --- a/include/X11/Xlibint.h +++ b/include/X11/Xlibint.h @@ -184,7 +184,7 @@ struct _XDisplay int xcmisc_opcode; /* major opcode for XC-MISC */ struct _XkbInfoRec *xkb_info; /* XKB info */ struct _XtransConnInfo *trans_conn; /* transport connection object */ - struct XCLPrivate *xcl; /* XCB glue private data */ + struct _X11XCBPrivate *xcb; /* XCB glue private data */ }; #define XAllocIDs(dpy,ids,n) (*(dpy)->idlist_alloc)(dpy,ids,n) diff --git a/include/X11/xcl.h b/include/X11/xcl.h deleted file mode 100644 index aa0cefc6..00000000 --- a/include/X11/xcl.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2003 Jamey Sharp. - * This file is licensed under the MIT license. See the file COPYING. */ - -#ifndef XCL_H -#define XCL_H - -#include -#include -#include - -/* Coercions from Xlib XID types to XCB XID types. - * On GCC/x86 with optimizations turned on, these compile to zero - * instructions. */ - -#define XCLCASTDECL(src_t, dst_t, field) \ - static inline xcb_##dst_t xcl_##dst_t(src_t src) \ - { \ - xcb_##dst_t dst; \ - dst.field = src; \ - return dst; \ - } -#define XCLXIDCASTDECL(src_t, dst_t) XCLCASTDECL(src_t, dst_t, xid) -#define XCLIDCASTDECL(src_t, dst_t) XCLCASTDECL(src_t, dst_t, id) - -XCLXIDCASTDECL(Window, window_t) -XCLXIDCASTDECL(Pixmap, pixmap_t) -XCLXIDCASTDECL(Cursor, cursor_t) -XCLXIDCASTDECL(Font, font_t) -XCLXIDCASTDECL(GContext, gcontext_t) -XCLXIDCASTDECL(Colormap, colormap_t) -XCLXIDCASTDECL(Atom, atom_t) - -/* For the union types, pick an arbitrary field of the union to hold the - * Xlib XID. Assumes the bit pattern is the same regardless of the field. */ -XCLCASTDECL(Drawable, drawable_t, window.xid) -XCLCASTDECL(Font, fontable_t, font.xid) - -XCLIDCASTDECL(VisualID, visualid_t) -XCLIDCASTDECL(Time, timestamp_t) -XCLIDCASTDECL(KeySym, keysym_t) -XCLIDCASTDECL(KeyCode, keycode_t) -XCLIDCASTDECL(CARD8, button_t) - -/* xcl/display.c */ - -xcb_connection_t *XGetXCBConnection(Display *dpy); - -/* xcl/io.c */ - -enum XEventQueueOwner { XlibOwnsEventQueue = 0, XCBOwnsEventQueue }; -void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner); - -#endif /* XCL_H */ diff --git a/man/AllPlanes.man b/man/AllPlanes.man index d5fbb6f2..829a45d2 100644 --- a/man/AllPlanes.man +++ b/man/AllPlanes.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH AllPlanes 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH AllPlanes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME AllPlanes, BlackPixel, WhitePixel, ConnectionNumber, DefaultColormap, DefaultDepth, XListDepths, DefaultGC, DefaultRootWindow, DefaultScreenOfDisplay, DefaultScreen, DefaultVisual, DisplayCells, DisplayPlanes, DisplayString, XMaxRequestSize, XExtendedMaxRequestSize, LastKnownRequestProcessed, NextRequest, ProtocolVersion, ProtocolRevision, QLength, RootWindow, ScreenCount, ScreenOfDisplay, ServerVendor, VendorRelease \- Display macros and functions .SH SYNTAX diff --git a/man/BlackPixelOfScreen.man b/man/BlackPixelOfScreen.man index 08c3cd55..68f38ed1 100644 --- a/man/BlackPixelOfScreen.man +++ b/man/BlackPixelOfScreen.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH BlackPixelOfScreen 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH BlackPixelOfScreen __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME BlackPixelOfScreen, WhitePixelOfScreen, CellsOfScreen, DefaultColormapOfScreen, DefaultDepthOfScreen, DefaultGCOfScreen, DefaultVisualOfScreen, DoesBackingStore, DoesSaveUnders, DisplayOfScreen, XScreenNumberOfScreen, EventMaskOfScreen, HeightOfScreen, HeightMMOfScreen, MaxCmapsOfScreen, MinCmapsOfScreen, PlanesOfScreen, RootWindowOfScreen, WidthOfScreen, WidthMMOfScreen \- screen information functions and macros .SH SYNTAX diff --git a/man/DisplayOfCCC.man b/man/DisplayOfCCC.man index 4fc6153b..512a1736 100644 --- a/man/DisplayOfCCC.man +++ b/man/DisplayOfCCC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH DisplayOfCCC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH DisplayOfCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME DisplayOfCCC, VisualOfCCC, ScreenNumberOfCCC, ScreenWhitePointOfCCC, ClientWhitePointOfCCC \- Color Conversion Context macros .SH SYNTAX diff --git a/man/ImageByteOrder.man b/man/ImageByteOrder.man index c54d639c..37827505 100644 --- a/man/ImageByteOrder.man +++ b/man/ImageByteOrder.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH ImageByteOrder 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH ImageByteOrder __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME ImageByteOrder, BitmapBitOrder, BitmapPad, BitmapUnit, DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM, XListPixmapFormats, XPixmapFormatValues \- image format functions and macros .SH SYNTAX diff --git a/man/IsCursorKey.man b/man/IsCursorKey.man index cd33be51..d37ea1ba 100644 --- a/man/IsCursorKey.man +++ b/man/IsCursorKey.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH IsCursorKey 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH IsCursorKey __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME IsCursorKey, IsFunctionKey, IsKeypadKey, IsMiscFunctionKey, IsModifierKey, IsPFKey, IsPrivateKeypadKey \- keysym classification macros .SH SYNTAX diff --git a/man/Makefile.am b/man/Makefile.am index 8c6ff257..807c6b38 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -76,6 +76,7 @@ libman_PRE = \ XGetVisualInfo.man \ XGetWindowAttributes.man \ XGetWindowProperty.man \ + XGetXCBConnection.man \ XGrabButton.man \ XGrabKey.man \ XGrabKeyboard.man \ @@ -132,6 +133,7 @@ libman_PRE = \ XSetCloseDownMode.man \ XSetCommand.man \ XSetErrorHandler.man \ + XSetEventQueueOwner.man \ XSendEvent.man \ XSetFillStyle.man \ XSetFont.man \ diff --git a/man/XAddConnectionWatch.man b/man/XAddConnectionWatch.man index 8fb06dcb..e1320c80 100644 --- a/man/XAddConnectionWatch.man +++ b/man/XAddConnectionWatch.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XAddConnectionWatch 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAddConnectionWatch __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAddConnectionWatch, XRemoveConnectionWatch, XProcessInternalConnection, XInternalConnectionNumbers \- handle Xlib internal connections .SH SYNTAX diff --git a/man/XAddHost.man b/man/XAddHost.man index 01c3335b..b9f0aa72 100644 --- a/man/XAddHost.man +++ b/man/XAddHost.man @@ -147,7 +147,7 @@ .el .sp 10p .. .ny0 -.TH XAddHost 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAddHost __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAddHost, XAddHosts, XListHosts, XRemoveHost, XRemoveHosts, XSetAccessControl, XEnableAccessControl, XDisableAccessControl, XHostAddress, XServerInterpretedAddress \- control host access and host control structure .SH SYNTAX diff --git a/man/XAllocClassHint.man b/man/XAllocClassHint.man index 96998994..5145dd0a 100644 --- a/man/XAllocClassHint.man +++ b/man/XAllocClassHint.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XAllocClassHint 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllocClassHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocClassHint, XSetClassHint, XGetClassHint, XClassHint \- allocate class hints structure and set or read a window's WM_CLASS property .SH SYNTAX diff --git a/man/XAllocColor.man b/man/XAllocColor.man index 57a3dd50..ef379b0b 100644 --- a/man/XAllocColor.man +++ b/man/XAllocColor.man @@ -142,7 +142,7 @@ .. .ny0 '\" e -.TH XAllocColor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocColor, XAllocNamedColor, XAllocColorCells, XAllocColorPlanes, XFreeColors \- allocate and free colors .SH SYNTAX diff --git a/man/XAllocIconSize.man b/man/XAllocIconSize.man index 466aa996..fb05d596 100644 --- a/man/XAllocIconSize.man +++ b/man/XAllocIconSize.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XAllocIconSize 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllocIconSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocIconSize, XSetIconSizes, XGetIconSizes, XIconSize \- allocate icon size structure and set or read a window's WM_ICON_SIZES property .SH SYNTAX diff --git a/man/XAllocSizeHints.man b/man/XAllocSizeHints.man index e086e447..e957214d 100644 --- a/man/XAllocSizeHints.man +++ b/man/XAllocSizeHints.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XAllocSizeHints 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllocSizeHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XSetWMSizeHints, XGetWMSizeHints, XSizeHints \- allocate size hints structure and set or read a window's WM_NORMAL_HINTS property .SH SYNTAX diff --git a/man/XAllocStandardColormap.man b/man/XAllocStandardColormap.man index 54a4a451..29039e53 100644 --- a/man/XAllocStandardColormap.man +++ b/man/XAllocStandardColormap.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XAllocStandardColormap 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllocStandardColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap \- allocate, set, or read a standard colormap structure .SH SYNTAX diff --git a/man/XAllocWMHints.man b/man/XAllocWMHints.man index 7a3ce557..4c3fe1d7 100644 --- a/man/XAllocWMHints.man +++ b/man/XAllocWMHints.man @@ -144,7 +144,7 @@ .. .ny0 '\" t -.TH XAllocWMHints 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllocWMHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllocWMHints, XSetWMHints, XGetWMHints, XWMHints \- allocate window manager hints structure and set or read a window's WM_HINTS property .SH SYNTAX diff --git a/man/XAllowEvents.man b/man/XAllowEvents.man index 0805afa9..8be58092 100644 --- a/man/XAllowEvents.man +++ b/man/XAllowEvents.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XAllowEvents 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAllowEvents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAllowEvents \- release queued events .SH SYNTAX diff --git a/man/XAnyEvent.man b/man/XAnyEvent.man index 5f6fc037..f095958e 100644 --- a/man/XAnyEvent.man +++ b/man/XAnyEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XAnyEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XAnyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XAnyEvent, XEvent \- generic X event structures .SH STRUCTURES diff --git a/man/XButtonEvent.man b/man/XButtonEvent.man index f84e95b8..4a28ea8f 100644 --- a/man/XButtonEvent.man +++ b/man/XButtonEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XButtonEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XButtonEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XButtonEvent, XKeyEvent, XMotionEvent \- KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures .SH STRUCTURES diff --git a/man/XChangeKeyboardControl.man b/man/XChangeKeyboardControl.man index 841a7ed3..58a5c9b2 100644 --- a/man/XChangeKeyboardControl.man +++ b/man/XChangeKeyboardControl.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XChangeKeyboardControl 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XChangeKeyboardControl __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeKeyboardControl, XGetKeyboardControl, XAutoRepeatOn, XAutoRepeatOff, XBell, XQueryKeymap, XKeyboardControl \- manipulate keyboard settings and keyboard control structure .SH SYNTAX diff --git a/man/XChangeKeyboardMapping.man b/man/XChangeKeyboardMapping.man index 3d140cc6..67b030a7 100644 --- a/man/XChangeKeyboardMapping.man +++ b/man/XChangeKeyboardMapping.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XChangeKeyboardMapping 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XChangeKeyboardMapping __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeKeyboardMapping, XGetKeyboardMapping, XDisplayKeycodes, XSetModifierMapping, XGetModifierMapping, XNewModifiermap, XInsertModifiermapEntry, XDeleteModifiermapEntry, XFreeModifierMap XModifierKeymap \- manipulate keyboard encoding and keyboard encoding structure .SH SYNTAX diff --git a/man/XChangePointerControl.man b/man/XChangePointerControl.man index 4002543f..25804328 100644 --- a/man/XChangePointerControl.man +++ b/man/XChangePointerControl.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XChangePointerControl 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XChangePointerControl __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangePointerControl, XGetPointerControl \- control pointer .SH SYNTAX diff --git a/man/XChangeSaveSet.man b/man/XChangeSaveSet.man index b6998905..8ccc6c96 100644 --- a/man/XChangeSaveSet.man +++ b/man/XChangeSaveSet.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XChangeSaveSet 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XChangeSaveSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeSaveSet, XAddToSaveSet, XRemoveFromSaveSet \- change a client's save set .SH SYNTAX diff --git a/man/XChangeWindowAttributes.man b/man/XChangeWindowAttributes.man index 4e2a0af8..1de75240 100644 --- a/man/XChangeWindowAttributes.man +++ b/man/XChangeWindowAttributes.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XChangeWindowAttributes 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XChangeWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XChangeWindowAttributes, XSetWindowBackground, XSetWindowBackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap, XSetWindowColormap \- change window attributes .SH SYNTAX diff --git a/man/XCirculateEvent.man b/man/XCirculateEvent.man index e936dce7..b3e4d8db 100644 --- a/man/XCirculateEvent.man +++ b/man/XCirculateEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XCirculateEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCirculateEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCirculateEvent \- CirculateNotify event structure .SH STRUCTURES diff --git a/man/XCirculateRequestEvent.man b/man/XCirculateRequestEvent.man index fdcd28b2..ce97c264 100644 --- a/man/XCirculateRequestEvent.man +++ b/man/XCirculateRequestEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XCirculateRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCirculateRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCirculateRequestEvent \- CirculateRequest event structure .SH STRUCTURES diff --git a/man/XClearArea.man b/man/XClearArea.man index 590a8a68..26f2db24 100644 --- a/man/XClearArea.man +++ b/man/XClearArea.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XClearArea 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XClearArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XClearArea, XClearWindow \- clear area or window .SH SYNTAX diff --git a/man/XClientMessageEvent.man b/man/XClientMessageEvent.man index 8fc47058..915cc55c 100644 --- a/man/XClientMessageEvent.man +++ b/man/XClientMessageEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XClientMessageEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XClientMessageEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XClientMessageEvent \- ClientMessage event structure .SH STRUCTURES diff --git a/man/XColormapEvent.man b/man/XColormapEvent.man index 28c65eb8..95de9c9b 100644 --- a/man/XColormapEvent.man +++ b/man/XColormapEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XColormapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XColormapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XColormapEvent \- ColormapNotify event structure .SH STRUCTURES diff --git a/man/XConfigureEvent.man b/man/XConfigureEvent.man index b4124b02..5cc65cf4 100644 --- a/man/XConfigureEvent.man +++ b/man/XConfigureEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XConfigureEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XConfigureEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XConfigureEvent \- ConfigureNotify event structure .SH STRUCTURES diff --git a/man/XConfigureRequestEvent.man b/man/XConfigureRequestEvent.man index 4b78ed6f..dbf6c99f 100644 --- a/man/XConfigureRequestEvent.man +++ b/man/XConfigureRequestEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XConfigureRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XConfigureRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XConfigureRequestEvent \- ConfigureRequest event structure .SH STRUCTURES diff --git a/man/XConfigureWindow.man b/man/XConfigureWindow.man index 4043cfa0..54059c80 100644 --- a/man/XConfigureWindow.man +++ b/man/XConfigureWindow.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XConfigureWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XConfigureWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth, XWindowChanges \- configure windows and window changes structure .SH SYNTAX diff --git a/man/XCopyArea.man b/man/XCopyArea.man index 4ef78af8..61f8ca22 100644 --- a/man/XCopyArea.man +++ b/man/XCopyArea.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCopyArea 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCopyArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCopyArea, XCopyPlane \- copy areas .SH SYNTAX diff --git a/man/XCreateColormap.man b/man/XCreateColormap.man index ef3ce01a..17c6dbf1 100644 --- a/man/XCreateColormap.man +++ b/man/XCreateColormap.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XCreateColormap 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateColormap, XCopyColormapAndFree, XFreeColormap, XColor \- create, copy, or destroy colormaps and color structure .SH SYNTAX diff --git a/man/XCreateFontCursor.man b/man/XCreateFontCursor.man index 79830f84..ce0cd5cc 100644 --- a/man/XCreateFontCursor.man +++ b/man/XCreateFontCursor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreateFontCursor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateFontCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor \- create cursors .SH SYNTAX diff --git a/man/XCreateFontSet.man b/man/XCreateFontSet.man index 023aed43..3cfe8a1b 100644 --- a/man/XCreateFontSet.man +++ b/man/XCreateFontSet.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreateFontSet 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateFontSet, XFreeFontSet \- create and free an international text drawing font set .SH SYNTAX diff --git a/man/XCreateGC.man b/man/XCreateGC.man index a48839fe..91897a03 100644 --- a/man/XCreateGC.man +++ b/man/XCreateGC.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XCreateGC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateGC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure .SH SYNTAX diff --git a/man/XCreateIC.man b/man/XCreateIC.man index f4b7c7c7..9a1901ed 100644 --- a/man/XCreateIC.man +++ b/man/XCreateIC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreateIC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateIC, XDestroyIC, XIMOfIC \- create, destroy, and obtain the input method of an input context .SH SYNTAX diff --git a/man/XCreateOC.man b/man/XCreateOC.man index 5e4a6d8d..7f7eb0c9 100644 --- a/man/XCreateOC.man +++ b/man/XCreateOC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreateOC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateOC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateOC, XDestroyOC, XSetOCValues, XGetOCValues, XOMOfOC \- create output contexts .SH SYNTAX diff --git a/man/XCreatePixmap.man b/man/XCreatePixmap.man index d4bdd930..15938ca7 100644 --- a/man/XCreatePixmap.man +++ b/man/XCreatePixmap.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreatePixmap 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreatePixmap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreatePixmap, XFreePixmap \- create or destroy pixmaps .SH SYNTAX diff --git a/man/XCreateRegion.man b/man/XCreateRegion.man index d43cf2a1..808d7a15 100644 --- a/man/XCreateRegion.man +++ b/man/XCreateRegion.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreateRegion 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateRegion, XSetRegion, XDestroyRegion \- create or destroy regions .SH SYNTAX diff --git a/man/XCreateWindow.man b/man/XCreateWindow.man index df0102bd..18c66df7 100644 --- a/man/XCreateWindow.man +++ b/man/XCreateWindow.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XCreateWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateWindow, XCreateSimpleWindow, XSetWindowAttributes \- create windows and window attributes structure .SH SYNTAX diff --git a/man/XCreateWindowEvent.man b/man/XCreateWindowEvent.man index fc950d89..9fb2ce29 100644 --- a/man/XCreateWindowEvent.man +++ b/man/XCreateWindowEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XCreateWindowEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCreateWindowEvent \- CreateNotify event structure .SH STRUCTURES diff --git a/man/XCrossingEvent.man b/man/XCrossingEvent.man index 2cc15595..9721a2ce 100644 --- a/man/XCrossingEvent.man +++ b/man/XCrossingEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XCrossingEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCrossingEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XCrossingEvent \- EnterNotify and LeaveNotify event structure .SH STRUCTURES diff --git a/man/XDefineCursor.man b/man/XDefineCursor.man index 46fa149f..a3000d23 100644 --- a/man/XDefineCursor.man +++ b/man/XDefineCursor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDefineCursor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDefineCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDefineCursor, XUndefineCursor \- define cursors .SH SYNTAX diff --git a/man/XDestroyWindow.man b/man/XDestroyWindow.man index cdd47362..ca441341 100644 --- a/man/XDestroyWindow.man +++ b/man/XDestroyWindow.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDestroyWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDestroyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDestroyWindow, XDestroySubwindows \- destroy windows .SH SYNTAX diff --git a/man/XDestroyWindowEvent.man b/man/XDestroyWindowEvent.man index 2a1b0cd5..9c5a2615 100644 --- a/man/XDestroyWindowEvent.man +++ b/man/XDestroyWindowEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XDestroyWindowEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDestroyWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDestroyWindowEvent \- DestroyNotify event structure .SH STRUCTURES diff --git a/man/XDrawArc.man b/man/XDrawArc.man index 73609f3e..c878c458 100644 --- a/man/XDrawArc.man +++ b/man/XDrawArc.man @@ -143,7 +143,7 @@ .. .ny0 '\" e -.TH XDrawArc 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawArc __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawArc, XDrawArcs, XArc \- draw arcs and arc structure .SH SYNTAX diff --git a/man/XDrawImageString.man b/man/XDrawImageString.man index 1e13ee13..38a58111 100644 --- a/man/XDrawImageString.man +++ b/man/XDrawImageString.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDrawImageString 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawImageString, XDrawImageString16 \- draw image text .SH SYNTAX diff --git a/man/XDrawLine.man b/man/XDrawLine.man index 7beba738..03ae3450 100644 --- a/man/XDrawLine.man +++ b/man/XDrawLine.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDrawLine 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawLine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawLine, XDrawLines, XDrawSegments, XSegment \- draw lines, polygons, and line structure .SH SYNTAX diff --git a/man/XDrawPoint.man b/man/XDrawPoint.man index dff55a54..37be5f54 100644 --- a/man/XDrawPoint.man +++ b/man/XDrawPoint.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDrawPoint 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawPoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawPoint, XDrawPoints, XPoint \- draw points and points structure .SH SYNTAX diff --git a/man/XDrawRectangle.man b/man/XDrawRectangle.man index 5a36f822..a210cad1 100644 --- a/man/XDrawRectangle.man +++ b/man/XDrawRectangle.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDrawRectangle 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawRectangle, XDrawRectangles, XRectangle \- draw rectangles and rectangles structure .SH SYNTAX diff --git a/man/XDrawString.man b/man/XDrawString.man index 6e8e8b59..767be991 100644 --- a/man/XDrawString.man +++ b/man/XDrawString.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XDrawString 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawString, XDrawString16 \- draw text characters .SH SYNTAX diff --git a/man/XDrawText.man b/man/XDrawText.man index fd7a2663..706d69e2 100644 --- a/man/XDrawText.man +++ b/man/XDrawText.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XDrawText 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XDrawText, XDrawText16, XTextItem, XTextItem16 \- draw polytext text and text drawing structures .SH SYNTAX diff --git a/man/XEmptyRegion.man b/man/XEmptyRegion.man index 723f4f99..37211996 100644 --- a/man/XEmptyRegion.man +++ b/man/XEmptyRegion.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XEmptyRegion 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XEmptyRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XEmptyRegion, XEqualRegion, XPointInRegion, XRectInRegion \- determine if regions are empty or equal .SH SYNTAX diff --git a/man/XErrorEvent.man b/man/XErrorEvent.man index b4d7dfa1..e1f4eae7 100644 --- a/man/XErrorEvent.man +++ b/man/XErrorEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XErrorEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XErrorEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XErrorEvent \- X error event structure .SH STRUCTURES diff --git a/man/XExposeEvent.man b/man/XExposeEvent.man index 18da9052..82efac21 100644 --- a/man/XExposeEvent.man +++ b/man/XExposeEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XExposeEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XExposeEvent \- Expose event structure .SH STRUCTURES diff --git a/man/XExtentsOfFontSet.man b/man/XExtentsOfFontSet.man index ed5fbff0..35d4c7b7 100644 --- a/man/XExtentsOfFontSet.man +++ b/man/XExtentsOfFontSet.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XExtentsOfFontSet 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XExtentsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XExtentsOfFontSet \- obtain the maximum extents structure for a font set .SH SYNTAX diff --git a/man/XFillRectangle.man b/man/XFillRectangle.man index f12d76a2..5061f722 100644 --- a/man/XFillRectangle.man +++ b/man/XFillRectangle.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XFillRectangle 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFillRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFillRectangle, XFillRectangles, XFillPolygon, XFillArc, XFillArcs \- fill rectangles, polygons, or arcs .SH SYNTAX diff --git a/man/XFilterEvent.man b/man/XFilterEvent.man index bda0a0d5..ea6bdce8 100644 --- a/man/XFilterEvent.man +++ b/man/XFilterEvent.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XFilterEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFilterEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFilterEvent \- filter X events for an input method .SH SYNTAX diff --git a/man/XFlush.man b/man/XFlush.man index dd2b9b40..fa3fc363 100644 --- a/man/XFlush.man +++ b/man/XFlush.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XFlush 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFlush __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFlush, XSync, XEventsQueued, XPending \- handle output buffer or event queue .SH SYNTAX diff --git a/man/XFocusChangeEvent.man b/man/XFocusChangeEvent.man index dd0955be..c96d3ccd 100644 --- a/man/XFocusChangeEvent.man +++ b/man/XFocusChangeEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XFocusChangeEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFocusChangeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFocusChangeEvent \- FocusIn and FocusOut event structure .SH STRUCTURES diff --git a/man/XFontSetExtents.man b/man/XFontSetExtents.man index da8ebd5b..6d415baa 100644 --- a/man/XFontSetExtents.man +++ b/man/XFontSetExtents.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XFontSetExtents 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFontSetExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFontSetExtents \- XFontSetExtents structure .SH STRUCTURES diff --git a/man/XFontsOfFontSet.man b/man/XFontsOfFontSet.man index 360c52c1..7e2dc478 100644 --- a/man/XFontsOfFontSet.man +++ b/man/XFontsOfFontSet.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XFontsOfFontSet 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFontsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFontsOfFontSet, XBaseFontNameListOfFontSet, XLocaleOfFontSet, XContextDependentDrawing, XContextualDrawing, XDirectionalDependentDrawing \- obtain fontset information .SH SYNTAX diff --git a/man/XFree.man b/man/XFree.man index 34c8c8b3..5952998e 100644 --- a/man/XFree.man +++ b/man/XFree.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XFree 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XFree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XFree \- free client data .SH SYNTAX diff --git a/man/XGetVisualInfo.man b/man/XGetVisualInfo.man index 5df1f8f1..86f6856e 100644 --- a/man/XGetVisualInfo.man +++ b/man/XGetVisualInfo.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XGetVisualInfo 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGetVisualInfo __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetVisualInfo, XMatchVisualInfo, XVisualIDFromVisual, XVisualInfo \- obtain visual information and visual structure .SH SYNTAX diff --git a/man/XGetWindowAttributes.man b/man/XGetWindowAttributes.man index a2c5eaf0..b7665b71 100644 --- a/man/XGetWindowAttributes.man +++ b/man/XGetWindowAttributes.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XGetWindowAttributes 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGetWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetWindowAttributes, XGetGeometry, XWindowAttributes \- get current window attribute or geometry and current window attributes structure .SH SYNTAX @@ -193,7 +193,8 @@ The .ZN XGetWindowAttributes function returns the current attributes for the specified window to an .ZN XWindowAttributes -structure. +structure. It returns a nonzero status on success; otherwise, it returns a +zero status. .LP .ZN XGetWindowAttributes can generate @@ -210,6 +211,8 @@ border width, and depth. These are described in the argument list. It is legal to pass to this function a window whose class is .ZN InputOnly . +It returns a nonzero status on success; otherwise, it returns a +zero status. .SH STRUCTURES The .ZN XWindowAttributes diff --git a/man/XGetWindowProperty.man b/man/XGetWindowProperty.man index 8db9f7c5..a1d19ff8 100644 --- a/man/XGetWindowProperty.man +++ b/man/XGetWindowProperty.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XGetWindowProperty 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGetWindowProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGetWindowProperty, XListProperties, XChangeProperty, XRotateWindowProperties, XDeleteProperty \- obtain and change window properties .SH SYNTAX diff --git a/man/XGetXCBConnection.man b/man/XGetXCBConnection.man new file mode 100644 index 00000000..eaf71b40 --- /dev/null +++ b/man/XGetXCBConnection.man @@ -0,0 +1,44 @@ +.\" Copyright \(co 2006 Josh Triplett +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining +.\" a copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation the rights to use, copy, modify, merge, publish, +.\" distribute, sublicense, and/or sell copies of the Software, and to +.\" permit persons to whom the Software is furnished to do so, subject to +.\" the following conditions: +.\" +.\" The above copyright notice and this permission notice shall be included +.\" in all copies or substantial portions of the Software. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR +.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +.\" OTHER DEALINGS IN THE SOFTWARE. +.\" +.TH XGetXCBConnection __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" +.SH NAME +XGetXCBConnection \- get the XCB connection for an Xlib Display +.SH SYNTAX +.HP + #include +.HP +xcb_connection_t *XGetXCBConnection(Display *\fIdpy\fP); +.SH ARGUMENTS +.IP \fIdpy\fP 1i +Specifies the connection to the X server. +.IN "Environment" "DISPLAY" +.SH DESCRIPTION +The \fIXGetXCBConnection\fP function returns the XCB connection associated with +an Xlib Display. Clients can use this XCB connection with functions from the +XCB library, just as they would with an XCB connection created with XCB. +Callers of this function must link to libX11-xcb and a version of Xlib built +with XCB support. +.SH "SEE ALSO" +XOpenDisplay(3X11), +XSetEventQueueOwner(3X11), +.br +\fIXlib \- C Language X Interface\fP diff --git a/man/XGrabButton.man b/man/XGrabButton.man index 03db7c8d..a6c20fed 100644 --- a/man/XGrabButton.man +++ b/man/XGrabButton.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XGrabButton 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGrabButton __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabButton, XUngrabButton \- grab pointer buttons .SH SYNTAX diff --git a/man/XGrabKey.man b/man/XGrabKey.man index bfe9270b..b0cfd8bc 100644 --- a/man/XGrabKey.man +++ b/man/XGrabKey.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XGrabKey 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGrabKey __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabKey, XUngrabKey \- grab keyboard keys .SH SYNTAX diff --git a/man/XGrabKeyboard.man b/man/XGrabKeyboard.man index 340e11e0..db1255fd 100644 --- a/man/XGrabKeyboard.man +++ b/man/XGrabKeyboard.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XGrabKeyboard 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGrabKeyboard __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabKeyboard, XUngrabKeyboard \- grab the keyboard .SH SYNTAX diff --git a/man/XGrabPointer.man b/man/XGrabPointer.man index c4756a1f..46a99869 100644 --- a/man/XGrabPointer.man +++ b/man/XGrabPointer.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XGrabPointer 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGrabPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabPointer, XUngrabPointer, XChangeActivePointerGrab \- grab the pointer .SH SYNTAX diff --git a/man/XGrabServer.man b/man/XGrabServer.man index 7f318bdc..e3701c70 100644 --- a/man/XGrabServer.man +++ b/man/XGrabServer.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XGrabServer 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGrabServer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGrabServer, XUngrabServer \- grab the server .SH SYNTAX diff --git a/man/XGraphicsExposeEvent.man b/man/XGraphicsExposeEvent.man index 7e481c9f..6e20083f 100644 --- a/man/XGraphicsExposeEvent.man +++ b/man/XGraphicsExposeEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XGraphicsExposeEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGraphicsExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGraphicsExposeEvent, XNoExposeEvent \- GraphicsExpose and NoExpose event structures .SH STRUCTURES diff --git a/man/XGravityEvent.man b/man/XGravityEvent.man index fd825df4..9d07e6f8 100644 --- a/man/XGravityEvent.man +++ b/man/XGravityEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XGravityEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XGravityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XGravityEvent \- GravityNotify event structure .SH STRUCTURES diff --git a/man/XIconifyWindow.man b/man/XIconifyWindow.man index a863c139..edb1101a 100644 --- a/man/XIconifyWindow.man +++ b/man/XIconifyWindow.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XIconifyWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XIconifyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XIconifyWindow, XWithdrawWindow, XReconfigureWMWindow \- manipulate top-level windows .SH SYNTAX diff --git a/man/XIfEvent.man b/man/XIfEvent.man index 90dad9ec..61d28e51 100644 --- a/man/XIfEvent.man +++ b/man/XIfEvent.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XIfEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XIfEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XIfEvent, XCheckIfEvent, XPeekIfEvent \- check the event queue with a predicate procedure .SH SYNTAX diff --git a/man/XInitImage.man b/man/XInitImage.man index 3de1b412..e2c82a6f 100644 --- a/man/XInitImage.man +++ b/man/XInitImage.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XCreateImage 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XCreateImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInitImage, XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel, XDestroyImage \- image utilities .SH SYNTAX diff --git a/man/XInitThreads.man b/man/XInitThreads.man index 92edbe61..64b13847 100644 --- a/man/XInitThreads.man +++ b/man/XInitThreads.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XInitThreads 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XInitThreads __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInitThreads, XLockDisplay, XUnlockDisplay \- multi-threading support .SH SYNTAX diff --git a/man/XInstallColormap.man b/man/XInstallColormap.man index 0650ab2e..249ba495 100644 --- a/man/XInstallColormap.man +++ b/man/XInstallColormap.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XInstallColormap 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XInstallColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInstallColormap, XUninstallColormap, XListInstalledColormaps \- control colormaps .SH SYNTAX diff --git a/man/XInternAtom.man b/man/XInternAtom.man index b0c103e6..4c7b56f4 100644 --- a/man/XInternAtom.man +++ b/man/XInternAtom.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XInternAtom 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XInternAtom __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XInternAtom, XInternAtoms, XGetAtomName, XGetAtomNames \- create or return atom names .SH SYNTAX diff --git a/man/XIntersectRegion.man b/man/XIntersectRegion.man index 09450335..c4482f53 100644 --- a/man/XIntersectRegion.man +++ b/man/XIntersectRegion.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XIntersectRegion 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XIntersectRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XIntersectRegion, XUnionRegion, XUnionRectWithRegion, XSubtractRegion, XXorRegion, XOffsetRegion, XShrinkRegion \- region arithmetic .SH SYNTAX diff --git a/man/XKeymapEvent.man b/man/XKeymapEvent.man index 2b833ae4..c687c964 100644 --- a/man/XKeymapEvent.man +++ b/man/XKeymapEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XKeymapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XKeymapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XKeymapEvent \- KeymapNotify event structure .SH STRUCTURES diff --git a/man/XListFonts.man b/man/XListFonts.man index 726bced8..880ff0c4 100644 --- a/man/XListFonts.man +++ b/man/XListFonts.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XListFonts 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XListFonts __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XListFonts, XFreeFontNames, XListFontsWithInfo, XFreeFontInfo \- obtain or free font names and information .SH SYNTAX @@ -253,6 +253,12 @@ is passed, the structure is freed, but the font is not closed; use .ZN XUnloadFont to close the font. +.LP +Note that +.ZN XListFontsWithInfo +is not thread-safe. If other threads make X requests on the same +.ZN Display , +then this function's behavior is undefined. .SH "SEE ALSO" XLoadFont(3X11), XSetFontPath(3X11) diff --git a/man/XLoadFont.man b/man/XLoadFont.man index cb7a3873..ab7e8906 100644 --- a/man/XLoadFont.man +++ b/man/XLoadFont.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XLoadFont 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XLoadFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XLoadFont, XQueryFont, XLoadQueryFont, XFreeFont, XGetFontProperty, XUnloadFont, XCharStruct, XFontProp, XChar2b, XFontStruct \- load or unload fonts and font metric structures .SH SYNTAX diff --git a/man/XLookupKeysym.man b/man/XLookupKeysym.man index 38a5900b..7e1ac4ae 100644 --- a/man/XLookupKeysym.man +++ b/man/XLookupKeysym.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XLookupKeysym 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XLookupKeysym __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XLookupKeysym, XRefreshKeyboardMapping, XLookupString, XRebindKeysym \- handle keyboard input events in Latin-1 .SH SYNTAX diff --git a/man/XMapEvent.man b/man/XMapEvent.man index 097b3107..5bc8f854 100644 --- a/man/XMapEvent.man +++ b/man/XMapEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XMapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XMapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XMapEvent, XMappingEvent \- MapNotify and MappingNotify event structures .SH STRUCTURES diff --git a/man/XMapRequestEvent.man b/man/XMapRequestEvent.man index 15ae3610..f76551de 100644 --- a/man/XMapRequestEvent.man +++ b/man/XMapRequestEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XMapRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XMapRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XMapRequestEvent \- MapRequest event structure .SH STRUCTURES diff --git a/man/XMapWindow.man b/man/XMapWindow.man index 5dfb4cec..b56fa82b 100644 --- a/man/XMapWindow.man +++ b/man/XMapWindow.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XMapWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XMapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XMapWindow, XMapRaised, XMapSubwindows \- map windows .SH SYNTAX diff --git a/man/XNextEvent.man b/man/XNextEvent.man index cfed368e..cef74855 100644 --- a/man/XNextEvent.man +++ b/man/XNextEvent.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XNextEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XNextEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XNextEvent, XPeekEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent \- select events by type .SH SYNTAX diff --git a/man/XNoOp.man b/man/XNoOp.man index 10ce6a24..9fd9890f 100644 --- a/man/XNoOp.man +++ b/man/XNoOp.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XNoOp 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XNoOp __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XNoOp \- No Operation .SH SYNTAX diff --git a/man/XOpenDisplay.man b/man/XOpenDisplay.man index ddc26ee7..04ae8519 100644 --- a/man/XOpenDisplay.man +++ b/man/XOpenDisplay.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XOpenDisplay 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XOpenDisplay __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XOpenDisplay, XCloseDisplay \- connect or disconnect to X server .SH SYNTAX diff --git a/man/XOpenIM.man b/man/XOpenIM.man index b2f89732..04700854 100644 --- a/man/XOpenIM.man +++ b/man/XOpenIM.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XOpenIM 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XOpenIM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XOpenIM, XCloseIM, XSetIMValues, XGetIMValues, XDisplayOfIM, XLocaleOfIM, XRegisterIMInstantiateCallback, XUnregisterIMInstantiateCallback \- open, close, and otain input method information .SH SYNTAX diff --git a/man/XOpenOM.man b/man/XOpenOM.man index 3977c550..498c0163 100644 --- a/man/XOpenOM.man +++ b/man/XOpenOM.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XOpenOM 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XOpenOM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XOpenOM, XCloseOM, XSetOMValues, XGetOMValues, XDisplayOfOM, XLocaleOfOM \- open output methods .SH SYNTAX diff --git a/man/XParseGeometry.man b/man/XParseGeometry.man index a3b0a923..1f5068c0 100644 --- a/man/XParseGeometry.man +++ b/man/XParseGeometry.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XParseGeometry 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XParseGeometry __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XParseGeometry, XWMGeometry \- parse window geometry .SH SYNTAX diff --git a/man/XPolygonRegion.man b/man/XPolygonRegion.man index 97d5eb38..8be420cc 100644 --- a/man/XPolygonRegion.man +++ b/man/XPolygonRegion.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XPolygonRegion 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XPolygonRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPolygonRegion, XClipBox \- generate regions .SH SYNTAX diff --git a/man/XPropertyEvent.man b/man/XPropertyEvent.man index a9378ef3..ef34642d 100644 --- a/man/XPropertyEvent.man +++ b/man/XPropertyEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XPropertyEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XPropertyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPropertyEvent \- PropertyNotify event structure .SH STRUCTURES diff --git a/man/XPutBackEvent.man b/man/XPutBackEvent.man index 6ab7ce2f..0fc4bca2 100644 --- a/man/XPutBackEvent.man +++ b/man/XPutBackEvent.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XPutBackEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XPutBackEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPutBackEvent \- put events back on the queue .SH SYNTAX diff --git a/man/XPutImage.man b/man/XPutImage.man index 10ccb4a1..8880d8d2 100644 --- a/man/XPutImage.man +++ b/man/XPutImage.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XPutImage 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XPutImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XPutImage, XGetImage, XGetSubImage \- transfer images .SH SYNTAX diff --git a/man/XQueryBestSize.man b/man/XQueryBestSize.man index 65b70c6e..667d15b4 100644 --- a/man/XQueryBestSize.man +++ b/man/XQueryBestSize.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XQueryBestSize 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XQueryBestSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryBestSize, XQueryBestTile, XQueryBestStipple \- determine efficient sizes .SH SYNTAX diff --git a/man/XQueryColor.man b/man/XQueryColor.man index 45062862..eff8a6c6 100644 --- a/man/XQueryColor.man +++ b/man/XQueryColor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XQueryColor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryColor, XQueryColors, XLookupColor, XParseColor \- obtain color values .SH SYNTAX diff --git a/man/XQueryExtension.man b/man/XQueryExtension.man index cb74f061..a81ec0cf 100644 --- a/man/XQueryExtension.man +++ b/man/XQueryExtension.man @@ -15,7 +15,7 @@ .\" express or implied warranty. .\" .dS xL Programming with Xlib -.TH XQueryExtension 3X11 7.0 Release "X Version 11" "X FUNCTIONS" +.TH XQueryExtension __libmansuffix__ __xorgversion__ "X FUNCTIONS" .SH NAME XQueryExtension, XListExtensions, XFreeExtensionList \- list available extensions .SH SYNTAX diff --git a/man/XQueryPointer.man b/man/XQueryPointer.man index 440d43ba..708ef2df 100644 --- a/man/XQueryPointer.man +++ b/man/XQueryPointer.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XQueryPointer 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XQueryPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryPointer \- get pointer coordinates .SH SYNTAX diff --git a/man/XQueryTree.man b/man/XQueryTree.man index a1619d8f..81338d2a 100644 --- a/man/XQueryTree.man +++ b/man/XQueryTree.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XQueryTree 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XQueryTree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XQueryTree \- query window tree information .SH SYNTAX diff --git a/man/XRaiseWindow.man b/man/XRaiseWindow.man index af66c6ab..5acb18d8 100644 --- a/man/XRaiseWindow.man +++ b/man/XRaiseWindow.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XRaiseWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XRaiseWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XRaiseWindow, XLowerWindow, XCirculateSubwindows, XCirculateSubwindowsUp, XCirculateSubwindowsDown, XRestackWindows \- change window stacking order .SH SYNTAX diff --git a/man/XReadBitmapFile.man b/man/XReadBitmapFile.man index 1880f379..defbbf98 100644 --- a/man/XReadBitmapFile.man +++ b/man/XReadBitmapFile.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XReadBitmapFile 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XReadBitmapFile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XReadBitmapFile, XReadBitmapFileData, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData \- manipulate bitmaps .SH SYNTAX diff --git a/man/XRecolorCursor.man b/man/XRecolorCursor.man index 4b005ca9..07c036a7 100644 --- a/man/XRecolorCursor.man +++ b/man/XRecolorCursor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XRecolorCursor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XRecolorCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XRecolorCursor, XFreeCursor, XQueryBestCursor \- manipulate cursors .SH SYNTAX diff --git a/man/XReparentEvent.man b/man/XReparentEvent.man index f5927fa3..ff42e283 100644 --- a/man/XReparentEvent.man +++ b/man/XReparentEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XReparentEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XReparentEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XReparentEvent \- ReparentNotify event structure .SH STRUCTURES diff --git a/man/XReparentWindow.man b/man/XReparentWindow.man index da1c1a80..ae3363fa 100644 --- a/man/XReparentWindow.man +++ b/man/XReparentWindow.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XReparentWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XReparentWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XReparentWindow \- reparent windows .SH SYNTAX diff --git a/man/XResizeRequestEvent.man b/man/XResizeRequestEvent.man index ee7959ca..71243b9a 100644 --- a/man/XResizeRequestEvent.man +++ b/man/XResizeRequestEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XResizeRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XResizeRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XResizeRequestEvent \- ResizeRequest event structure .SH STRUCTURES diff --git a/man/XResourceManagerString.man b/man/XResourceManagerString.man index cc713a73..81f69b71 100644 --- a/man/XResourceManagerString.man +++ b/man/XResourceManagerString.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XResourceManagerString 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XResourceManagerString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XResourceManagerString, XScreenResourceString \- obtain server resource properties .SH SYNTAX diff --git a/man/XSaveContext.man b/man/XSaveContext.man index b76e561c..566e2514 100644 --- a/man/XSaveContext.man +++ b/man/XSaveContext.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSaveContext 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSaveContext __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSaveContext, XFindContext, XDeleteContext, XUniqueContext \- associative look-up routines .SH SYNTAX diff --git a/man/XSelectInput.man b/man/XSelectInput.man index 1e3be473..5868748a 100644 --- a/man/XSelectInput.man +++ b/man/XSelectInput.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSelectInput 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSelectInput __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectInput \- select input events .SH SYNTAX diff --git a/man/XSelectionClearEvent.man b/man/XSelectionClearEvent.man index 3c5bacb7..3fd7b1f9 100644 --- a/man/XSelectionClearEvent.man +++ b/man/XSelectionClearEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XSelectionClearEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSelectionClearEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectionClearEvent \- SelectionClear event structure .SH STRUCTURES diff --git a/man/XSelectionEvent.man b/man/XSelectionEvent.man index 783d0331..45481f51 100644 --- a/man/XSelectionEvent.man +++ b/man/XSelectionEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XSelectionEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSelectionEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectionEvent \- SelectionNotify event structure .SH STRUCTURES diff --git a/man/XSelectionRequestEvent.man b/man/XSelectionRequestEvent.man index 165a9e30..9d2febee 100644 --- a/man/XSelectionRequestEvent.man +++ b/man/XSelectionRequestEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XSelectionRequestEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSelectionRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSelectionRequestEvent \- SelectionRequest event structure .SH STRUCTURES diff --git a/man/XSendEvent.man b/man/XSendEvent.man index 98f5ce5a..5c897159 100644 --- a/man/XSendEvent.man +++ b/man/XSendEvent.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSendEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSendEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents, XTimeCoord \- send events and pointer motion history structure .SH SYNTAX diff --git a/man/XSetArcMode.man b/man/XSetArcMode.man index f7bb9446..0862e95a 100644 --- a/man/XSetArcMode.man +++ b/man/XSetArcMode.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetArcMode 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetArcMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetArcMode, XSetSubwindowMode, XSetGraphicsExposure \- GC convenience routines .SH SYNTAX diff --git a/man/XSetClipOrigin.man b/man/XSetClipOrigin.man index 498af34c..ddbe6cfe 100644 --- a/man/XSetClipOrigin.man +++ b/man/XSetClipOrigin.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetClipOrigin 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetClipOrigin __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetClipOrigin, XSetClipMask, XSetClipRectangles \- GC convenience routines .SH SYNTAX diff --git a/man/XSetCloseDownMode.man b/man/XSetCloseDownMode.man index 9c3ed008..e16f80cc 100644 --- a/man/XSetCloseDownMode.man +++ b/man/XSetCloseDownMode.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetCloseDownMode 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetCloseDownMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetCloseDownMode, XKillClient \- control clients .SH SYNTAX diff --git a/man/XSetCommand.man b/man/XSetCommand.man index 3d86d306..c5f03e71 100644 --- a/man/XSetCommand.man +++ b/man/XSetCommand.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetCommand 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetCommand __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetCommand, XGetCommand \- set or read a window's WM_COMMAND property .SH SYNTAX diff --git a/man/XSetErrorHandler.man b/man/XSetErrorHandler.man index c3acf27a..5ccf3a91 100644 --- a/man/XSetErrorHandler.man +++ b/man/XSetErrorHandler.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetErrorHandler 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetErrorHandler __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetErrorHandler, XGetErrorText, XDisplayName, XSetIOErrorHandler, XGetErrorDatabaseText \- default error handlers .SH SYNTAX diff --git a/man/XSetEventQueueOwner.man b/man/XSetEventQueueOwner.man new file mode 100644 index 00000000..e3306aa7 --- /dev/null +++ b/man/XSetEventQueueOwner.man @@ -0,0 +1,58 @@ +.\" Copyright \(co 2006 Josh Triplett +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining +.\" a copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation the rights to use, copy, modify, merge, publish, +.\" distribute, sublicense, and/or sell copies of the Software, and to +.\" permit persons to whom the Software is furnished to do so, subject to +.\" the following conditions: +.\" +.\" The above copyright notice and this permission notice shall be included +.\" in all copies or substantial portions of the Software. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR +.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +.\" OTHER DEALINGS IN THE SOFTWARE. +.\" +.TH XSetEventQueueOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" +.SH NAME +XSetEventQueueOwner \- set event queue owner on a shared Xlib/XCB connection +.SH SYNTAX +.HP + #include +.HP +void XSetEventQueueOwner(Display *\fIdpy\fP, enum XEventQueueOwner \fIowner\fP); +.SH ARGUMENTS +.IP \fIdpy\fP 1i +Specifies the connection to the X server. +.IP \fIowner\fP 1i +Specifies the event queue ownership: +.RS +.TP +\fIXlibOwnsEventQueue\fP (default) +Xlib owns the event queue. Use the Xlib event-handling functions. Do not +call the XCB event-handling functions. +.TP +\fIXCBOwnsEventQueue\fP +XCB owns the event queue. Use the XCB event-handling functions. Do not call +the Xlib event-handling functions. +.RE +.IN "Environment" "DISPLAY" +.SH DESCRIPTION +While a client using Xlib/XCB can issue requests and handle their replies or +errors with either Xlib or XCB, only one can own and handle the event queue. +By default, Xlib must own the event queue, for compatibility with legacy Xlib +clients. Clients can call \fIXSetEventQueueOwner\fP immediately after +\fIXOpenDisplay\fP to let XCB own the event queue instead. Clients may not +call \fIXSetEventQueueOwner\fP at any other time, as this will potentially +lose responses. +.SH "SEE ALSO" +XOpenDisplay(3X11), +XGetXCBConnection(3X11), +.br +\fIXlib \- C Language X Interface\fP diff --git a/man/XSetFillStyle.man b/man/XSetFillStyle.man index 85c56bfa..e8700db1 100644 --- a/man/XSetFillStyle.man +++ b/man/XSetFillStyle.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetFillStyle 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetFillStyle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetFillStyle, XSetFillRule \- GC convenience routines .SH SYNTAX diff --git a/man/XSetFont.man b/man/XSetFont.man index 7401c05c..4b44e226 100644 --- a/man/XSetFont.man +++ b/man/XSetFont.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetFont 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetFont \- GC convenience routines .SH SYNTAX diff --git a/man/XSetFontPath.man b/man/XSetFontPath.man index bd917092..2548a5f3 100644 --- a/man/XSetFontPath.man +++ b/man/XSetFontPath.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetFontPath 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetFontPath __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetFontPath, XGetFontPath, XFreeFontPath \- set, get, or free the font search path .SH SYNTAX diff --git a/man/XSetICFocus.man b/man/XSetICFocus.man index 1e6dd6e2..19b81849 100644 --- a/man/XSetICFocus.man +++ b/man/XSetICFocus.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetICFocus 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetICFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetICFocus, XUnsetICFocus \- set and unset input context focus .SH SYNTAX diff --git a/man/XSetICValues.man b/man/XSetICValues.man index c7aca29e..1e072f73 100644 --- a/man/XSetICValues.man +++ b/man/XSetICValues.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetICValues 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetICValues __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetICValues, XGetICValues \- set and obtain XIC values .SH SYNTAX diff --git a/man/XSetInputFocus.man b/man/XSetInputFocus.man index 821241b4..14d26550 100644 --- a/man/XSetInputFocus.man +++ b/man/XSetInputFocus.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetInputFocus 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetInputFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetInputFocus, XGetInputFocus \- control input focus .SH SYNTAX diff --git a/man/XSetLineAttributes.man b/man/XSetLineAttributes.man index 7a903c42..09be3f58 100644 --- a/man/XSetLineAttributes.man +++ b/man/XSetLineAttributes.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetLineAttributes 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetLineAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetLineAttributes, XSetDashes \- GC convenience routines .SH SYNTAX diff --git a/man/XSetPointerMapping.man b/man/XSetPointerMapping.man index da09bac2..7b0845a1 100644 --- a/man/XSetPointerMapping.man +++ b/man/XSetPointerMapping.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetPointerMapping 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetPointerMapping __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetPointerMapping, XGetPointerMapping \- manipulate pointer settings .SH SYNTAX diff --git a/man/XSetScreenSaver.man b/man/XSetScreenSaver.man index 0632ae5d..c0c1e363 100644 --- a/man/XSetScreenSaver.man +++ b/man/XSetScreenSaver.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetScreenSaver 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetScreenSaver __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver \- manipulate the screen saver .SH SYNTAX diff --git a/man/XSetSelectionOwner.man b/man/XSetSelectionOwner.man index 7ff67ed7..64ad9761 100644 --- a/man/XSetSelectionOwner.man +++ b/man/XSetSelectionOwner.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetSelectionOwner 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetSelectionOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetSelectionOwner, XGetSelectionOwner, XConvertSelection \- manipulate window selection .SH SYNTAX diff --git a/man/XSetState.man b/man/XSetState.man index 21485678..aa0143d1 100644 --- a/man/XSetState.man +++ b/man/XSetState.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetState 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetState __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetState, XSetFunction, XSetPlaneMask, XSetForeground, XSetBackground \- GC convenience routines .SH SYNTAX diff --git a/man/XSetTextProperty.man b/man/XSetTextProperty.man index 24b6fc99..b7ae9ea5 100644 --- a/man/XSetTextProperty.man +++ b/man/XSetTextProperty.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetTextProperty 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetTextProperty, XGetTextProperty \- set and read text properties .SH SYNTAX diff --git a/man/XSetTile.man b/man/XSetTile.man index f9e439da..0fa1e041 100644 --- a/man/XSetTile.man +++ b/man/XSetTile.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetTile 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetTile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetTile, XSetStipple, XSetTSOrigin \- GC convenience routines .SH SYNTAX diff --git a/man/XSetTransientForHint.man b/man/XSetTransientForHint.man index 4ace855d..03c292d2 100644 --- a/man/XSetTransientForHint.man +++ b/man/XSetTransientForHint.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetTransientForHint 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetTransientForHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetTransientForHint, XGetTransientForHint \- set or read a window's WM_TRANSIENT_FOR property .SH SYNTAX diff --git a/man/XSetWMClientMachine.man b/man/XSetWMClientMachine.man index 8299ee1b..504a5940 100644 --- a/man/XSetWMClientMachine.man +++ b/man/XSetWMClientMachine.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetWMClientMachine 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetWMClientMachine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMClientMachine, XGetWMClientMachine \- set or read a window's WM_CLIENT_MACHINE property .SH SYNTAX diff --git a/man/XSetWMColormapWindows.man b/man/XSetWMColormapWindows.man index 015ec823..b9eca2e7 100644 --- a/man/XSetWMColormapWindows.man +++ b/man/XSetWMColormapWindows.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetWMColormapWindows 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetWMColormapWindows __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMColormapWindows, XGetWMColormapWindows \- set or read a window's WM_COLORMAP_WINDOWS property .SH SYNTAX diff --git a/man/XSetWMIconName.man b/man/XSetWMIconName.man index baef8849..b389a906 100644 --- a/man/XSetWMIconName.man +++ b/man/XSetWMIconName.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetWMIconName 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetWMIconName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMIconName, XGetWMIconName, XSetIconName, XGetIconName \- set or read a window's WM_ICON_NAME property .SH SYNTAX diff --git a/man/XSetWMName.man b/man/XSetWMName.man index 0e963aa2..5a040718 100644 --- a/man/XSetWMName.man +++ b/man/XSetWMName.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetWMName 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetWMName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMName, XGetWMName, XStoreName, XFetchName \- set or read a window's WM_NAME property .SH SYNTAX diff --git a/man/XSetWMProperties.man b/man/XSetWMProperties.man index 2398fbc9..7c4ce585 100644 --- a/man/XSetWMProperties.man +++ b/man/XSetWMProperties.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XSetWMProperties 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetWMProperties __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMProperties, XmbSetWMProperties, Xutf8SetWMProperties \- set standard window properties .SH SYNTAX diff --git a/man/XSetWMProtocols.man b/man/XSetWMProtocols.man index 44bf5acf..d75f4081 100644 --- a/man/XSetWMProtocols.man +++ b/man/XSetWMProtocols.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSetWMProtocols 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSetWMProtocols __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSetWMProtocols, XGetWMProtocols \- set or read a window's WM_PROTOCOLS property .SH SYNTAX diff --git a/man/XStoreBytes.man b/man/XStoreBytes.man index 40f48653..dda24e02 100644 --- a/man/XStoreBytes.man +++ b/man/XStoreBytes.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XStoreBytes 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XStoreBytes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStoreBytes, XStoreBuffer, XFetchBytes, XFetchBuffer, XRotateBuffers \- manipulate cut and paste buffers .SH SYNTAX diff --git a/man/XStoreColors.man b/man/XStoreColors.man index bb905826..6b516ada 100644 --- a/man/XStoreColors.man +++ b/man/XStoreColors.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XStoreColors 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XStoreColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStoreColors, XStoreColor, XStoreNamedColor \- set colors .SH SYNTAX diff --git a/man/XStringListToTextProperty.man b/man/XStringListToTextProperty.man index 02cc2165..a9210483 100644 --- a/man/XStringListToTextProperty.man +++ b/man/XStringListToTextProperty.man @@ -142,7 +142,7 @@ .el .sp 10p .. .ny0 -.TH XStringListToTextProperty 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XStringListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStringListToTextProperty, XTextPropertyToStringList, XFreeStringList, XTextProperty \- convert string lists and text property structure .SH SYNTAX diff --git a/man/XStringToKeysym.man b/man/XStringToKeysym.man index 9c3a48eb..511bd3aa 100644 --- a/man/XStringToKeysym.man +++ b/man/XStringToKeysym.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XStringToKeysym 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XStringToKeysym __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XStringToKeysym, XKeysymToString, XKeycodeToKeysym, XKeysymToKeycode, XConvertCase \- convert keysyms .SH SYNTAX diff --git a/man/XSupportsLocale.man b/man/XSupportsLocale.man index 167421e3..85111e0a 100644 --- a/man/XSupportsLocale.man +++ b/man/XSupportsLocale.man @@ -142,7 +142,7 @@ .el .sp 10p .. .ny0 -.TH XSupportsLocale 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSupportsLocale __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSupportsLocale, XSetLocaleModifiers \- determine locale support and configure locale modifiers .SH SYNTAX diff --git a/man/XSynchronize.man b/man/XSynchronize.man index 65ca2c12..404631e9 100644 --- a/man/XSynchronize.man +++ b/man/XSynchronize.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XSynchronize 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XSynchronize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XSynchronize, XSetAfterFunction \- enable or disable synchronization .SH SYNTAX diff --git a/man/XTextExtents.man b/man/XTextExtents.man index 96634c56..becf7f44 100644 --- a/man/XTextExtents.man +++ b/man/XTextExtents.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XTextExtents 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XTextExtents, XTextExtents16, XQueryTextExtents, XQueryTextExtents16 \- compute or query text extents .SH SYNTAX diff --git a/man/XTextWidth.man b/man/XTextWidth.man index 149878fc..2e2c7948 100644 --- a/man/XTextWidth.man +++ b/man/XTextWidth.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XTextWidth 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XTextWidth __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XTextWidth, XTextWidth16 \- compute text width .SH SYNTAX diff --git a/man/XTranslateCoordinates.man b/man/XTranslateCoordinates.man index ab329a53..364636d3 100644 --- a/man/XTranslateCoordinates.man +++ b/man/XTranslateCoordinates.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XTranslateCoordinates 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XTranslateCoordinates __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XTranslateCoordinates \- translate window coordinates .SH SYNTAX diff --git a/man/XUnmapEvent.man b/man/XUnmapEvent.man index 261f0866..c560a2ac 100644 --- a/man/XUnmapEvent.man +++ b/man/XUnmapEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XUnmapEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XUnmapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XUnmapEvent \- UnmapNotify event structure .SH STRUCTURES diff --git a/man/XUnmapWindow.man b/man/XUnmapWindow.man index 84874ce4..0c5f5aaa 100644 --- a/man/XUnmapWindow.man +++ b/man/XUnmapWindow.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XUnmapWindow 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XUnmapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XUnmapWindow, XUnmapSubwindows \- unmap windows .SH SYNTAX diff --git a/man/XVaCreateNestedList.man b/man/XVaCreateNestedList.man index 1ef3113b..9017317b 100644 --- a/man/XVaCreateNestedList.man +++ b/man/XVaCreateNestedList.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XVaCreateNestedList 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XVaCreateNestedList __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XVaCreateNestedList \- allocate a nested variable argument list .SH SYNTAX diff --git a/man/XVisibilityEvent.man b/man/XVisibilityEvent.man index 503c034c..0313aabf 100644 --- a/man/XVisibilityEvent.man +++ b/man/XVisibilityEvent.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XVisibilityEvent 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XVisibilityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XVisibilityEvent \- VisibilityNotify event structure .SH STRUCTURES diff --git a/man/XWarpPointer.man b/man/XWarpPointer.man index 2e88459a..07ec5d53 100644 --- a/man/XWarpPointer.man +++ b/man/XWarpPointer.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XWarpPointer 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XWarpPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XWarpPointer \- move pointer .SH SYNTAX diff --git a/man/XcmsAllocColor.man b/man/XcmsAllocColor.man index c6fdbf71..bf93c736 100644 --- a/man/XcmsAllocColor.man +++ b/man/XcmsAllocColor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsAllocColor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsAllocColor, XcmsAllocNamedColor \- allocate colors .SH SYNTAX diff --git a/man/XcmsCCCOfColormap.man b/man/XcmsCCCOfColormap.man index 9cee8e7e..0303cd36 100644 --- a/man/XcmsCCCOfColormap.man +++ b/man/XcmsCCCOfColormap.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsCCCOfColormap 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsCCCOfColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCCCOfColormap, XcmsSetCCCOfColormap \- query and modify CCC of a colormap .SH SYNTAX diff --git a/man/XcmsCIELabQueryMaxC.man b/man/XcmsCIELabQueryMaxC.man index abc80beb..ef0c3ee1 100644 --- a/man/XcmsCIELabQueryMaxC.man +++ b/man/XcmsCIELabQueryMaxC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsCIELabQueryMax 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsCIELabQueryMax __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCIELabQueryMaxC, XcmsCIELabQueryMaxL, XcmsCIELabQueryMaxLC, XcmsCIELabQueryMinL \- obtain the CIE L*a*b* coordinates .SH SYNTAX diff --git a/man/XcmsCIELuvQueryMaxC.man b/man/XcmsCIELuvQueryMaxC.man index ee389d63..01f9f497 100644 --- a/man/XcmsCIELuvQueryMaxC.man +++ b/man/XcmsCIELuvQueryMaxC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsCIELuvQueryMaxC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsCIELuvQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCIELuvQueryMaxC, XcmsCIELuvQueryMaxL, XcmsCIELuvQueryMaxLC, XcmsCIELuvQueryMinL \- obtain the CIE L*u*v* coordinates .SH SYNTAX diff --git a/man/XcmsColor.man b/man/XcmsColor.man index dcd7a7ee..43635ceb 100644 --- a/man/XcmsColor.man +++ b/man/XcmsColor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsColor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsColor, XcmsRGB, XcmsRGBi, XcmsCIEXYZ, XcmsCIEuvY, XcmsCIExyY, XcmsCIELab, XcmsCIELuv, XcmsTekHVC, XcmsPad \- Xcms color struture .SH STRUCTURES diff --git a/man/XcmsConvertColors.man b/man/XcmsConvertColors.man index e80986d0..9e3ca616 100644 --- a/man/XcmsConvertColors.man +++ b/man/XcmsConvertColors.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsConvertColors 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsConvertColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsConvertColors \- convert CCC color specifications .SH SYNTAX diff --git a/man/XcmsCreateCCC.man b/man/XcmsCreateCCC.man index ccf1548c..24fcee8e 100644 --- a/man/XcmsCreateCCC.man +++ b/man/XcmsCreateCCC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsCreateCCC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsCreateCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsCreateCCC, XcmsFreeCCC \- creating and destroying CCCs .SH SYNTAX diff --git a/man/XcmsDefaultCCC.man b/man/XcmsDefaultCCC.man index febe50ee..fe703c1a 100644 --- a/man/XcmsDefaultCCC.man +++ b/man/XcmsDefaultCCC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsDefaultCCC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsDefaultCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsDefaultCCC \- obtain the default CCC for a screen .SH SYNTAX diff --git a/man/XcmsQueryBlack.man b/man/XcmsQueryBlack.man index 96588c9e..de67a6ec 100644 --- a/man/XcmsQueryBlack.man +++ b/man/XcmsQueryBlack.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsQueryBlack 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsQueryBlack __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsQueryBlack, XcmsQueryBlue, XcmsQueryGreen, XcmsQueryRed, XcmsQueryWhite \- obtain black, blue, green, red, and white CCC color specifications .SH SYNTAX diff --git a/man/XcmsQueryColor.man b/man/XcmsQueryColor.man index b485beff..b32b8c65 100644 --- a/man/XcmsQueryColor.man +++ b/man/XcmsQueryColor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsQueryColor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsQueryColor, XcmsQueryColors, XcmsLookupColor \- obtain color values .SH SYNTAX diff --git a/man/XcmsSetWhitePoint.man b/man/XcmsSetWhitePoint.man index dca7069c..1af22e20 100644 --- a/man/XcmsSetWhitePoint.man +++ b/man/XcmsSetWhitePoint.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsSetWhitePoint 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsSetWhitePoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsSetWhitePoint, XcmsSetWhiteAdjustProc \- modifying CCC attributes .SH SYNTAX diff --git a/man/XcmsStoreColor.man b/man/XcmsStoreColor.man index 3630ad0e..b51889be 100644 --- a/man/XcmsStoreColor.man +++ b/man/XcmsStoreColor.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsStoreColor 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsStoreColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsStoreColor, XcmsStoreColors \- set colors .SH SYNTAX diff --git a/man/XcmsTekHVCQueryMaxC.man b/man/XcmsTekHVCQueryMaxC.man index 28e7a4cc..e98de022 100644 --- a/man/XcmsTekHVCQueryMaxC.man +++ b/man/XcmsTekHVCQueryMaxC.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XcmsTekHVCQueryMaxC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XcmsTekHVCQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XcmsTekHVCQueryMaxC, XcmsTekHVCQueryMaxV, XcmsTekHVCQueryMaxVC, XcmsTekHVCQueryMaxVSamples, XcmsTekHVCQueryMinV \- obtain the TekHVC coordinates .SH SYNTAX diff --git a/man/XmbDrawImageString.man b/man/XmbDrawImageString.man index e47c033b..335077fd 100644 --- a/man/XmbDrawImageString.man +++ b/man/XmbDrawImageString.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XmbDrawImageString 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbDrawImageString, XwcDrawImageString, Xutf8DrawImageString \- draw image text using a single font set .SH SYNTAX diff --git a/man/XmbDrawString.man b/man/XmbDrawString.man index 8af12eda..0af25f15 100644 --- a/man/XmbDrawString.man +++ b/man/XmbDrawString.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XmbDrawString 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbDrawString, XwcDrawString, Xutf8DrawString \- draw text using a single font set .SH SYNTAX diff --git a/man/XmbDrawText.man b/man/XmbDrawText.man index 3baf7224..30fe5ea7 100644 --- a/man/XmbDrawText.man +++ b/man/XmbDrawText.man @@ -142,7 +142,7 @@ .el .sp 10p .. .ny0 -.TH XmbDrawText 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbDrawText, XwcDrawText, Xutf8DrawText \- draw text using multiple font sets .SH SYNTAX diff --git a/man/XmbLookupString.man b/man/XmbLookupString.man index fc30f4a2..c2413aec 100644 --- a/man/XmbLookupString.man +++ b/man/XmbLookupString.man @@ -143,7 +143,7 @@ .. .ny0 '\" t -.TH XmbLookupString 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbLookupString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbLookupString, XwcLookupString, Xutf8LookupString \- obtain composed input from an input method .SH SYNTAX diff --git a/man/XmbResetIC.man b/man/XmbResetIC.man index e71465b6..79392145 100644 --- a/man/XmbResetIC.man +++ b/man/XmbResetIC.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XmbResetIC 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbResetIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbResetIC, XwcResetIC, Xutf8ResetIC \- reset the state of an input context .SH SYNTAX diff --git a/man/XmbTextEscapement.man b/man/XmbTextEscapement.man index 8aeb0b08..85c44d6a 100644 --- a/man/XmbTextEscapement.man +++ b/man/XmbTextEscapement.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XmbTextEscapement 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbTextEscapement __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextEscapement, XwcTextEscapement, Xutf8TextEscapement \- obtain the escapement of text .SH SYNTAX diff --git a/man/XmbTextExtents.man b/man/XmbTextExtents.man index 4c9ad9d3..7275224f 100644 --- a/man/XmbTextExtents.man +++ b/man/XmbTextExtents.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XmbTextExtents 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextExtents, XwcTextExtents, Xutf8TextExtents \- compute text extents .SH SYNTAX diff --git a/man/XmbTextListToTextProperty.man b/man/XmbTextListToTextProperty.man index 13367377..cad0cf37 100644 --- a/man/XmbTextListToTextProperty.man +++ b/man/XmbTextListToTextProperty.man @@ -144,7 +144,7 @@ .. .ny0 '\" t -.TH XmbTextListToTextProperty 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbTextListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextListToTextProperty, XwcTextListToTextProperty, Xutf8TextListToTextProperty, XmbTextPropertyToTextList, XwcTextPropertyToTextList, Xutf8TextPropertyToTextList, XwcFreeStringList, XDefaultString \- convert text lists and text property structures .SH SYNTAX diff --git a/man/XmbTextPerCharExtents.man b/man/XmbTextPerCharExtents.man index ba1d2e3a..3f7b2c4c 100644 --- a/man/XmbTextPerCharExtents.man +++ b/man/XmbTextPerCharExtents.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XmbTextPerCharExtents 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XmbTextPerCharExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XmbTextPerCharExtents, XwcTextPerCharExtents, Xutf8TextPerCharExtents \- obtain per-character information for a text string .SH SYNTAX diff --git a/man/XrmEnumerateDatabase.man b/man/XrmEnumerateDatabase.man index 0da6490e..67bc1e05 100644 --- a/man/XrmEnumerateDatabase.man +++ b/man/XrmEnumerateDatabase.man @@ -142,7 +142,7 @@ .. .ny0 '\" t -.TH XrmEnumerateDatabase 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmEnumerateDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmEnumerateDatabase \- enumerate resource database entries .SH SYNTAX diff --git a/man/XrmGetFileDatabase.man b/man/XrmGetFileDatabase.man index 925eca94..959603a6 100644 --- a/man/XrmGetFileDatabase.man +++ b/man/XrmGetFileDatabase.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XrmGetFileDatabase 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmGetFileDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmLocaleOfDatabase, XrmGetDatabase, XrmSetDatabase, XrmDestroyDatabase \- retrieve and store resource databases .SH SYNTAX diff --git a/man/XrmGetResource.man b/man/XrmGetResource.man index 98e96dc8..06d467c3 100644 --- a/man/XrmGetResource.man +++ b/man/XrmGetResource.man @@ -142,7 +142,7 @@ .. .ny0 '\" e -.TH XrmGetResource 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmGetResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmGetResource, XrmQGetResource, XrmQGetSearchList, XrmQGetSearchResource \- retrieve database resources and search lists .SH SYNTAX diff --git a/man/XrmInitialize.man b/man/XrmInitialize.man index 90484bfd..c282e614 100644 --- a/man/XrmInitialize.man +++ b/man/XrmInitialize.man @@ -141,7 +141,7 @@ .el .sp 10p .. .ny0 -.TH XrmInitialize 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmInitialize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmInitialize, XrmParseCommand, XrmValue, XrmOptionKind, XrmOptionDescRec \- initialize the Resource Manager, Resource Manager structures, and parse the command line .SH SYNTAX diff --git a/man/XrmMergeDatabases.man b/man/XrmMergeDatabases.man index 835dfaf9..22fc8f42 100644 --- a/man/XrmMergeDatabases.man +++ b/man/XrmMergeDatabases.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XrmMergeDatabases 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmMergeDatabases __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmMergeDatabases, XrmCombineDatabase, XrmCombineFileDatabase \- merge resource databases .SH SYNTAX diff --git a/man/XrmPutResource.man b/man/XrmPutResource.man index 80c59cb2..e42fbf81 100644 --- a/man/XrmPutResource.man +++ b/man/XrmPutResource.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XrmPutResource 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmPutResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmPutResource, XrmQPutResource, XrmPutStringResource, XrmQPutStringResource, XrmPutLineResource \- store database resources .SH SYNTAX diff --git a/man/XrmUniqueQuark.man b/man/XrmUniqueQuark.man index 45e53482..26332be1 100644 --- a/man/XrmUniqueQuark.man +++ b/man/XrmUniqueQuark.man @@ -140,7 +140,7 @@ .el .sp 10p .. .ny0 -.TH XrmUniqueQuark 3X11 __xorgversion__ "XLIB FUNCTIONS" +.TH XrmUniqueQuark __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS" .SH NAME XrmUniqueQuark, XrmStringToQuark, XrmPermStringToQuark, XrmQuarkToString, XrmStringToQuarkList, XrmStringToBindingQuarkList \- manipulate resource quarks .SH SYNTAX diff --git a/modules/im/ximcp/imLcIm.c b/modules/im/ximcp/imLcIm.c index 1dbce781..b1bbce5b 100644 --- a/modules/im/ximcp/imLcIm.c +++ b/modules/im/ximcp/imLcIm.c @@ -617,7 +617,6 @@ _XimCreateDefaultTree( } #endif - fp = _XFopenFile (name, "r"); if (! (fp = _XFopenFile (name, "r"))) { if (tmpcachedir) Xfree (tmpcachedir); diff --git a/nls/el_GR.UTF-8/Compose.pre b/nls/el_GR.UTF-8/Compose.pre index b7effb31..e8daf224 100644 --- a/nls/el_GR.UTF-8/Compose.pre +++ b/nls/el_GR.UTF-8/Compose.pre @@ -38,7 +38,6 @@ XCOMM Special Character : "'" apostrophe : "@" at : "[" bracketleft - : "\\" backslash : "\\" backslash : "\\" backslash : "]" bracketright @@ -757,32 +756,18 @@ XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "Ὧ" U1f6f : "ὰ" U1f70 : "ὰ" U1f70 - : "ά" U1f71 - : "ά" U1f71 : "ὲ" U1f72 : "ὲ" U1f72 - : "έ" U1f73 - : "έ" U1f73 : "ὴ" U1f74 : "ὴ" U1f74 - : "ή" U1f75 - : "ή" U1f75 : "ὶ" U1f76 : "ὶ" U1f76 - : "ί" U1f77 - : "ί" U1f77 : "ὸ" U1f78 : "ὸ" U1f78 - : "ό" U1f79 - : "ό" U1f79 : "ὺ" U1f7a : "ὺ" U1f7a - : "ύ" U1f7b - : "ύ" U1f7b : "ὼ" U1f7c : "ὼ" U1f7c - : "ώ" U1f7d - : "ώ" U1f7d : "ᾀ" U1f80 : "ᾀ" U1f80 : "ᾀ" U1f80 @@ -1277,32 +1262,18 @@ XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "Ῡ" U1fe9 : "Ὰ" U1fba : "Ὰ" U1fba - : "Ά" U1fbb - : "Ά" U1fbb : "Ὲ" U1fc8 : "Ὲ" U1fc8 - : "Έ" U1fc9 - : "Έ" U1fc9 : "Ὴ" U1fca : "Ὴ" U1fca - : "Ή" U1fcb - : "Ή" U1fcb : "Ὶ" U1fda : "Ὶ" U1fda - : "Ί" U1fdb - : "Ί" U1fdb : "Ὺ" U1fea : "Ὺ" U1fea - : "Ύ" U1feb - : "Ύ" U1feb : "Ὸ" U1ff8 : "Ὸ" U1ff8 - : "Ό" U1ff9 - : "Ό" U1ff9 : "Ὼ" U1ffa : "Ὼ" U1ffa - : "Ώ" U1ffb - : "Ώ" U1ffb : "ᾲ" U1fb2 : "ᾲ" U1fb2 : "ᾲ" U1fb2 @@ -1339,10 +1310,6 @@ XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "ῒ" U1fd2 : "ῒ" U1fd2 : "ῒ" U1fd2 - : "ΐ" U1fd3 - : "ΐ" U1fd3 - : "ΐ" U1fd3 - : "ΐ" U1fd3 : "ῖ" U1fd6 : "ῖ" U1fd6 : "ῗ" U1fd7 @@ -1353,10 +1320,6 @@ XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "ῢ" U1fe2 : "ῢ" U1fe2 : "ῢ" U1fe2 - : "ΰ" U1fe3 - : "ΰ" U1fe3 - : "ΰ" U1fe3 - : "ΰ" U1fe3 : "ῦ" U1fe6 : "ῦ" U1fe6 : "ῧ" U1fe7 @@ -1405,8 +1368,6 @@ XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "῟" U1fdf : "῭" U1fed : "῭" U1fed - : "΅" U1fee - : "΅" U1fee : "῁" U1fc1 : "῁" U1fc1 : "᾿" U1fbf @@ -1415,28 +1376,12 @@ XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl : "῾" U1ffe : "`" U1fef : "`" U1fef - : "´" U1ffd - : "´" U1ffd : "῀" U1fc0 : "῀" U1fc0 : "᾽" U1fbd : "ι" U1fbe - : "¨" U00a8 - : "¨" U00a8 - : "¯" U00af - : "¯" U00af - : "˘" U02d8 - : "˘" U02d8 : "ͺ" U037a : "ͺ" U037a - : "Ϊ" U03aa - : "Ϊ" U03aa - : "Ϋ" U03ab - : "Ϋ" U03ab - : "ϊ" U03ca - : "ϊ" U03ca - : "ϋ" U03cb - : "ϋ" U03cb XCOMM Part 3 XCOMM @@ -1457,8 +1402,6 @@ XCOMM converted from the iso8859-7/Compose file. : "Ύ" Greek_UPSILONaccent : "Ώ" Greek_OMEGAaccent : "Ώ" Greek_OMEGAaccent - : "Ϊ" Greek_IOTAdiaeresis - : "Ϊ" Greek_IOTAdiaeresis : "Ϊ" Greek_IOTAdieresis : "Ϊ" Greek_IOTAdieresis : "Ϋ" Greek_UPSILONdieresis @@ -1512,7 +1455,6 @@ XCOMM converted from the iso8859-7/Compose file. : "ϊ" Greek_iotadieresis : "ϋ" Greek_upsilondieresis - : "Ϊ" Greek_IOTAdiaeresis : "Ϊ" Greek_IOTAdieresis : "Ϋ" Greek_UPSILONdieresis : "¨" diaeresis diff --git a/nls/en_US.UTF-8/Compose.pre b/nls/en_US.UTF-8/Compose.pre index 3c3471df..e6eaa61a 100644 --- a/nls/en_US.UTF-8/Compose.pre +++ b/nls/en_US.UTF-8/Compose.pre @@ -197,28 +197,29 @@ XCOMM There are some conflicts among sequences, but I left them alone. XCOMM XCOMM group 1: cluster jamos made of three basic jamos - : "ᄢ" U1122 # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK - : "ᄣ" U1123 # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT - : "ᄤ" U1124 # HANGUL CHOSEONG PIEUP-SIOS-PIEUP - : "ᄥ" U1125 # HANGUL CHOSEONG PIEUP-SSANGSIOS - : "ᄦ" U1126 # HANGUL CHOSEONG PIEUP-SIOS-CIEUC - : "ᄬ" U112c # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP - : "ᄳ" U1133 # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK - : "ᄴ" U1134 # HANGUL CHOSEONG SIOS-SSANGSIOS - : "ᅫ" U116b # HANGUL JUNGSEONG WAE - : "ᅰ" U1170 # HANGUL JUNGSEONG WE - : "ᆋ" U118b # HANGUL JUNGSEONG U-EO-EU - : "ᇄ" U11c4 # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK - : "ᇌ" U11cc # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS - : "ᇏ" U11cf # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH - : "ᇑ" U11d1 # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK - : "ᇒ" U11d2 # HANGUL JONGSEONG RIEUL-MIEUM-SIOS - : "ᇓ" U11d3 # HANGUL JONGSEONG RIEUL-PIEUP-SIOS - : "ᇔ" U11d4 # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH - : "ᇕ" U11d5 # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP - : "ᇖ" U11d6 # HANGUL JONGSEONG RIEUL-SSANGSIOS - : "ᇞ" U11de # HANGUL JONGSEONG MIEUM-SSANGSIOS - : "ᇭ" U11ed # HANGUL JONGSEONG IEUNG-SSANGKIYEOK +## The follwing block gets overridden by later shorter compositions +## : "ᄢ" U1122 # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK +## : "ᄣ" U1123 # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT +## : "ᄤ" U1124 # HANGUL CHOSEONG PIEUP-SIOS-PIEUP +## : "ᄥ" U1125 # HANGUL CHOSEONG PIEUP-SSANGSIOS +## : "ᄦ" U1126 # HANGUL CHOSEONG PIEUP-SIOS-CIEUC +## : "ᄬ" U112c # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP +## : "ᄳ" U1133 # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK +## : "ᄴ" U1134 # HANGUL CHOSEONG SIOS-SSANGSIOS +## : "ᅫ" U116b # HANGUL JUNGSEONG WAE +## : "ᅰ" U1170 # HANGUL JUNGSEONG WE +## : "ᆋ" U118b # HANGUL JUNGSEONG U-EO-EU +## : "ᇄ" U11c4 # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK +## : "ᇌ" U11cc # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS +## : "ᇏ" U11cf # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH +## : "ᇑ" U11d1 # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK +## : "ᇒ" U11d2 # HANGUL JONGSEONG RIEUL-MIEUM-SIOS +## : "ᇓ" U11d3 # HANGUL JONGSEONG RIEUL-PIEUP-SIOS +## : "ᇔ" U11d4 # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH +## : "ᇕ" U11d5 # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP +## : "ᇖ" U11d6 # HANGUL JONGSEONG RIEUL-SSANGSIOS +## : "ᇞ" U11de # HANGUL JONGSEONG MIEUM-SSANGSIOS +## : "ᇭ" U11ed # HANGUL JONGSEONG IEUNG-SSANGKIYEOK : "ᄁ" U1101 # HANGUL CHOSEONG SSANGKIYEOK : "ᄄ" U1104 # HANGUL CHOSEONG SSANGTIKEUT : "ᄈ" U1108 # HANGUL CHOSEONG SSANGPIEUP @@ -861,6 +862,7 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE + : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "ŭ" U016D # LATIN SMALL LETTER U WITH BREVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE : "Ů" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE @@ -1106,7 +1108,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE - : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE @@ -1118,7 +1119,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE - : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : "ǻ" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE @@ -1611,14 +1611,14 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ೈ" U0CC8 # KANNADA VOWEL SIGN AI : "ೊ" U0CCA # KANNADA VOWEL SIGN O : "ೋ" U0CCB # KANNADA VOWEL SIGN OO - : "ೋ" U0CCB # KANNADA VOWEL SIGN OO +## : "ೋ" U0CCB # KANNADA VOWEL SIGN OO : "ൊ" U0D4A # MALAYALAM VOWEL SIGN O : "ോ" U0D4B # MALAYALAM VOWEL SIGN OO : "ൌ" U0D4C # MALAYALAM VOWEL SIGN AU : "ේ" U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA : "ො" U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA - : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA +## : "ෝ" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA : "ෞ" U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA : "གྷ" U0F43 # TIBETAN LETTER GHA : "ཌྷ" U0F4D # TIBETAN LETTER DDHA @@ -1660,7 +1660,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE - : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE @@ -1672,7 +1671,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE - : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE @@ -2097,13 +2095,11 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE - : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE - : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE @@ -2376,10 +2372,8 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE - : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE - : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE @@ -2392,10 +2386,8 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE - : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE - : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE @@ -2407,7 +2399,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE - : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE @@ -2419,7 +2410,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE - : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE @@ -2431,7 +2421,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE - : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE @@ -2443,7 +2432,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE - : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE @@ -2455,7 +2443,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE - : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE @@ -2467,7 +2454,6 @@ XCOMM group 1: cluster jamos made of three basic jamos : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE - : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE @@ -4995,9 +4981,9 @@ XCOMM group 1: cluster jamos made of three basic jamos : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS : "₎" U208E # SUBSCRIPT RIGHT PARENTHESIS : "℠" U2120 # SERVICE MARK - : "℠" U2120 # SERVICE MARK + : "℠" U2120 # SERVICE MARK : "™" U2122 # TRADE MARK SIGN - : "™" U2122 # TRADE MARK SIGN + : "™" U2122 # TRADE MARK SIGN : "↚" U219A # LEFTWARDS ARROW WITH STROKE : "↚" U219A # LEFTWARDS ARROW WITH STROKE : "↛" U219B # RIGHTWARDS ARROW WITH STROKE @@ -5573,22 +5559,22 @@ XCOMM group 1: cluster jamos made of three basic jamos : "텞" U1D15E # MUSICAL SYMBOL HALF NOTE : "텟" U1D15F # MUSICAL SYMBOL QUARTER NOTE : "텠" U1D160 # MUSICAL SYMBOL EIGHTH NOTE - : "텠" U1D160 # MUSICAL SYMBOL EIGHTH NOTE +## : "텠" U1D160 # MUSICAL SYMBOL EIGHTH NOTE : "텡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE - : "텡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE +## : "텡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE : "텢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE - : "텢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE +## : "텢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE : "텣" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE - : "텣" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE +## : "텣" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE : "텤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE - : "텤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +## : "텤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE : "톻" U1D1BB # MUSICAL SYMBOL MINIMA : "톼" U1D1BC # MUSICAL SYMBOL MINIMA BLACK : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE - : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE +## : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK - : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK +## : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE - : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE +## : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK - : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK +## : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK diff --git a/nls/iso8859-13/Compose.pre b/nls/iso8859-13/Compose.pre index 3c07f4c7..9dba6e4e 100644 --- a/nls/iso8859-13/Compose.pre +++ b/nls/iso8859-13/Compose.pre @@ -56,10 +56,6 @@ XCOMM are for compose sequences. : "\242" cent : "\242" cent : "\242" cent - : "\243" sterling - : "\243" sterling - : "\243" sterling - : "\243" sterling : "\243" sterling : "\243" sterling : "\243" sterling @@ -167,10 +163,6 @@ XCOMM Accented Alphabet : "\252" Rcedilla : "\317" Lcedilla : "\317" Lcedilla - : "\247" section - : "\247" section - : "\247" section - : "\247" section : "\320" Scaron : "\320" Scaron : "\307" Emacron @@ -179,11 +171,8 @@ XCOMM Accented Alphabet : "\307" Emacron : "\314" Gcedilla : "\314" Gcedilla - : "\255" hyphen : "\336" Zcaron : "\336" Zcaron - <0> : "\260" degree - <0> : "\260" degree : "\340" aogonek : "\340" aogonek : "\340" aogonek @@ -245,11 +234,8 @@ XCOMM Accented Alphabet : "\325" Otilde : "\326" Odiaeresis : "\326" Odiaeresis - : "\327" multiply : "\250" Ooblique : "\250" Ooblique - : "\270" oslash - : "\270" oslash : "\330" Uogonek : "\330" Uogonek : "\330" Uogonek @@ -349,6 +335,8 @@ XCOMM Accented Alphabet : "\375" zabovedot : "\375" zabovedot + : "\305" Aring + : "\345" aring : "\313" Eabovedot : "\353" eabovedot : "\335" Zabovedot @@ -360,8 +348,8 @@ XCOMM Accented Alphabet : "\353" eabovedot : "\335" Zabovedot : "\375" zabovedot - : "\305" Aring - : "\345" aring + : "\260" ring + : "\260" ring : "\377" rightsinglequotemark : "\303" Cacute : "\311" Eacute @@ -378,7 +366,7 @@ XCOMM Accented Alphabet : "\310" Ccaron : "\320" Scaron : "\336" Zcaron - : "\350" ccaron + : "\350" ccaron : "\360" scaron : "\376" zcaron : "\252" Rcedilla @@ -417,14 +405,6 @@ XCOMM Accented Alphabet : "\341" iogonek : "\346" eogonek : "\370" uogonek - : "\305" Aring - : "\345" aring - : "\313" Eabovedot - : "\353" eabovedot - : "\335" Zabovedot - : "\375" zabovedot - : "\260" ring - : "\260" ring : "\325" Otilde : "\365" otilde : "~" asciitilde diff --git a/nls/iso8859-14/Compose.pre b/nls/iso8859-14/Compose.pre index b0e14d4f..8acf9ca6 100644 --- a/nls/iso8859-14/Compose.pre +++ b/nls/iso8859-14/Compose.pre @@ -287,8 +287,6 @@ XCOMM Special Character : "'" apostrophe : "^" asciicircum : "~" asciitilde - : "`" grave - : "'" apostrophe XCOMM Accented Alphabet : "\300" Agrave diff --git a/nls/iso8859-2/Compose.pre b/nls/iso8859-2/Compose.pre index eb198bb9..b9026b4f 100644 --- a/nls/iso8859-2/Compose.pre +++ b/nls/iso8859-2/Compose.pre @@ -63,18 +63,6 @@ XCOMM are for compose sequences. : "\241" Aogonek : "\242" breve : "\243" Lstroke - : "\244" currency - : "\244" currency - : "\244" currency - : "\244" currency - : "\244" currency - : "\244" currency - : "\244" currency - : "\244" currency - <0> : "\244" currency - <0> : "\244" currency - <0> : "\244" currency - <0> : "\244" currency : "\245" Lcaron : "\245" Lcaron : "\245" Lcaron @@ -124,9 +112,7 @@ XCOMM are for compose sequences. : "\261" aogonek : "\261" aogonek : "\261" aogonek - : "\262" ogonek : "\263" lstroke - : "\264" acute : "\265" lcaron : "\265" lcaron : "\265" lcaron @@ -395,18 +381,8 @@ XCOMM are for compose sequences. : "\372" uacute : "\375" yacute : "\274" zacute - : "\275" doubleacute - : "\275" doubleacute - : "\302" Acircumflex - : "\316" Icircumflex - : "\324" Ocircumflex - : "\342" acircumflex - : "\356" icircumflex - : "\364" ocircumflex : "\303" Abreve : "\343" abreve - : "\257" Zabovedot - : "\277" zabovedot : "\304" Adiaeresis : "\313" Ediaeresis : "\326" Odiaeresis @@ -445,10 +421,6 @@ XCOMM are for compose sequences. : "\347" ccedilla : "\272" scedilla : "\376" tcedilla - : "\241" Aogonek - : "\312" Eogonek - : "\261" aogonek - : "\352" eogonek XCOMM those are for ease of use : "\331" Uring : "\371" uring @@ -489,7 +461,6 @@ XCOMM traditional sequences : "\356" icircumflex : "\364" ocircumflex : "\373" ucircumflex - : "\373" ucircumflex : "\136" asciicircum : "\136" asciicircum : "\136" asciicircum @@ -503,12 +474,10 @@ XCOMM traditional sequences : "\242" breve : "\242" breve : "\241" Aogonek - : "\261" aogonek - : "\262" ogonek - : "\262" ogonek : "\307" Iogonek : "\312" Eogonek : "\331" Uogonek + : "\261" aogonek : "\347" iogonek : "\352" eogonek : "\371" uogonek diff --git a/nls/iso8859-3/Compose.pre b/nls/iso8859-3/Compose.pre index c3f49815..71a58857 100644 --- a/nls/iso8859-3/Compose.pre +++ b/nls/iso8859-3/Compose.pre @@ -382,8 +382,6 @@ XCOMM Special Character : "\250" diaeresis : "^" asciicircum : "~" asciitilde - : "`" grave - : "'" apostrophe <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior diff --git a/nls/iso8859-4/Compose.pre b/nls/iso8859-4/Compose.pre index cbbe226d..f34e0924 100644 --- a/nls/iso8859-4/Compose.pre +++ b/nls/iso8859-4/Compose.pre @@ -67,7 +67,6 @@ XCOMM are for compose sequences. <0> : "\260" degree : "\261" aogonek : "\261" aogonek - : "\262" ogonek : "\263" rcedilla : "\263" rcedilla : "\264" acute diff --git a/nls/iso8859-7/Compose.pre b/nls/iso8859-7/Compose.pre index ac802004..019a67ce 100644 --- a/nls/iso8859-7/Compose.pre +++ b/nls/iso8859-7/Compose.pre @@ -133,8 +133,6 @@ XCOMM Accented Alphabet : "\276" Greek_UPSILONaccent : "\277" Greek_OMEGAaccent : "\277" Greek_OMEGAaccent - : "\332" Greek_IOTAdiaeresis - : "\332" Greek_IOTAdiaeresis : "\332" Greek_IOTAdieresis : "\332" Greek_IOTAdieresis : "\333" Greek_UPSILONdieresis @@ -172,12 +170,9 @@ XCOMM dead key accent keysyms XCOMM Special Character : "|" bar : "`" grave - : "'" apostrophe : "\250" diaeresis : "^" asciicircum : "~" asciitilde - : "`" grave - : "'" apostrophe : "\"" quotedbl : "\260" degree : "\260" degree @@ -213,10 +208,8 @@ XCOMM Accented Alphabet (plus some more symbols) : "\372" Greek_iotadieresis : "\373" Greek_upsilondieresis - : "\332" Greek_IOTAdiaeresis : "\332" Greek_IOTAdieresis : "\333" Greek_UPSILONdieresis - : "\250" diaeresis : "\250" diaeresis : "\267" periodcentered : "\253" guillemotleft diff --git a/nls/iso8859-9/Compose.pre b/nls/iso8859-9/Compose.pre index 82932ead..13ae0b40 100644 --- a/nls/iso8859-9/Compose.pre +++ b/nls/iso8859-9/Compose.pre @@ -11,7 +11,6 @@ XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe - : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash @@ -397,8 +396,6 @@ XCOMM Special Character : "\250" diaeresis : "^" asciicircum : "~" asciitilde - : "`" grave - : "'" apostrophe <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior diff --git a/nls/iso8859-9e/Compose.pre b/nls/iso8859-9e/Compose.pre index e1de4b96..a87899ad 100644 --- a/nls/iso8859-9e/Compose.pre +++ b/nls/iso8859-9e/Compose.pre @@ -10,7 +10,6 @@ XCOMM Special Character : "#" numbersign : "'" apostrophe : "'" apostrophe - : "@" at : "[" bracketleft : "\\" backslash : "\\" backslash @@ -408,8 +407,6 @@ XCOMM Special Character : "\250" diaeresis : "^" asciicircum : "~" asciitilde - : "`" grave - : "'" apostrophe <0> : "\260" degree <1> : "\271" onesuperior <2> : "\262" twosuperior diff --git a/nls/vi_VN.tcvn/Compose.pre b/nls/vi_VN.tcvn/Compose.pre index fcc2c43b..183d9469 100644 --- a/nls/vi_VN.tcvn/Compose.pre +++ b/nls/vi_VN.tcvn/Compose.pre @@ -9,10 +9,8 @@ XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "`" grave - : "'" apostrophe : " " space : "~" asciitilde - : "`" grave : "'" apostrophe : "\264" acute XCOMM Accented Alphabet diff --git a/nls/vi_VN.viscii/Compose.pre b/nls/vi_VN.viscii/Compose.pre index f4f96857..406a30be 100644 --- a/nls/vi_VN.viscii/Compose.pre +++ b/nls/vi_VN.viscii/Compose.pre @@ -9,10 +9,8 @@ XCOMM XCOMM dead key accent keysyms XCOMM Special Character : "`" grave - : "'" apostrophe : " " space : "~" asciitilde - : "`" grave : "'" apostrophe : "\264" acute XCOMM Accented Alphabet diff --git a/src/ClDisplay.c b/src/ClDisplay.c index 3051d55a..3a52d8bd 100644 --- a/src/ClDisplay.c +++ b/src/ClDisplay.c @@ -33,7 +33,7 @@ from The Open Group. #include #endif #if USE_XCB -#include "xclint.h" +#include "Xxcbint.h" #else /* !USE_XCB */ #include #endif /* USE_XCB */ @@ -75,7 +75,7 @@ XCloseDisplay ( XSync(dpy, 1); } #if USE_XCB - xcb_disconnect(XGetXCBConnection(dpy)); + xcb_disconnect(dpy->xcb->connection); #else /* !USE_XCB */ _XDisconnectDisplay(dpy->trans_conn); #endif /* USE_XCB */ diff --git a/src/FilterEv.c b/src/FilterEv.c index 0117291b..9fa18875 100644 --- a/src/FilterEv.c +++ b/src/FilterEv.c @@ -96,9 +96,9 @@ XFilterEvent(ev, window) if (win == p->window) { if ((mask & p->event_mask) || (ev->type >= p->start_type && ev->type <= p->end_type)) { + UnlockDisplay(ev->xany.display); ret = (*(p->filter))(ev->xany.display, p->window, ev, p->client_data); - UnlockDisplay(ev->xany.display); return(ret); } } diff --git a/src/Makefile.am b/src/Makefile.am index 32f55f03..18e4cbb0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -186,6 +186,7 @@ libX11_la_SOURCES = \ LiProps.c \ ListExt.c \ LoadFont.c \ + LockDis.c \ locking.c \ locking.h \ LookupCol.c \ @@ -341,13 +342,18 @@ EXTRA_DIST = \ if XCB libX11_la_SOURCES += \ - xcl/xcblock.c \ - xcl/display.c \ - xcl/io.c + xcb_lock.c \ + xcb_disp.c \ + xcb_io.c \ + Xxcbint.h + +lib_LTLIBRARIES += libX11-xcb.la +libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h +libX11_xcb_la_LDFLAGS = -version-info 1:0:0 -no-undefined +libX11_xcb_la_LIBADD = libX11.la else libX11_la_SOURCES += \ ConnDis.c \ - LockDis.c \ x11_trans.c endif diff --git a/src/OpenDis.c b/src/OpenDis.c index 943aa032..d8be825c 100644 --- a/src/OpenDis.c +++ b/src/OpenDis.c @@ -33,7 +33,7 @@ in this Software without prior written authorization from The Open Group. #endif #include "Xlibint.h" #if USE_XCB -#include "xclint.h" +#include "Xxcbint.h" #else /* !USE_XCB */ #include #include @@ -67,14 +67,8 @@ typedef struct { int (*_XInitDisplayLock_fn)(Display *dpy) = NULL; void (*_XFreeDisplayLock_fn)(Display *dpy) = NULL; -#if USE_XCB -#define InitDisplayLock(d) _XInitDisplayLock(d) -#define FreeDisplayLock(d) _XFreeDisplayLock(d) -#else /* if !USE_XCB */ #define InitDisplayLock(d) (_XInitDisplayLock_fn ? (*_XInitDisplayLock_fn)(d) : Success) #define FreeDisplayLock(d) if (_XFreeDisplayLock_fn) (*_XFreeDisplayLock_fn)(d) -#endif /* !USE_XCB */ - #else #define InitDisplayLock(dis) Success #define FreeDisplayLock(dis) @@ -266,6 +260,13 @@ XOpenDisplay ( return(NULL); } +#if USE_XCB + if (!_XCBInitDisplayLock(dpy)) { + OutOfMemory (dpy, setup); + return(NULL); + } +#endif + if (!_XPollfdCacheInit(dpy)) { OutOfMemory (dpy, setup); return(NULL); @@ -362,9 +363,9 @@ XOpenDisplay ( #if USE_XCB { - const xcb_setup_t *xcbsetup = xcb_get_setup(XGetXCBConnection(dpy)); - setuplength = xcbsetup->length << 2; + const struct xcb_setup_t *xcbsetup = xcb_get_setup(dpy->xcb->connection); memcpy(&prefix, xcbsetup, sizeof(prefix)); + setuplength = prefix.length << 2; setup = (char *) xcbsetup; setup += SIZEOF(xConnSetupPrefix); u.setup = (xConnSetup *) setup; @@ -672,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->xcb->connection); if(dpy->bigreq_size <= dpy->max_request_size) dpy->bigreq_size = 0; #endif /* USE_XCB */ @@ -906,7 +907,7 @@ void _XFreeDisplayStructure(dpy) Xfree (dpy->filedes); #if USE_XCB - _XFreeXCLStructure(dpy); + _XFreeX11XCBStructure(dpy); #endif /* USE_XCB */ Xfree ((char *)dpy); @@ -920,7 +921,8 @@ static void OutOfMemory (dpy, setup) char *setup; { #if USE_XCB - xcb_disconnect(XGetXCBConnection(dpy)); + if(dpy->xcb->connection) + xcb_disconnect(dpy->xcb->connection); #else /* !USE_XCB */ _XDisconnectDisplay (dpy->trans_conn); #endif /* USE_XCB */ diff --git a/src/xclint.h b/src/Xxcbint.h similarity index 62% rename from src/xclint.h rename to src/Xxcbint.h index 308647e9..956c891c 100644 --- a/src/xclint.h +++ b/src/Xxcbint.h @@ -1,11 +1,13 @@ -/* Copyright (C) 2003-2005 Jamey Sharp. +/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett * This file is licensed under the MIT license. See the file COPYING. */ -#ifndef XCLINT_H -#define XCLINT_H +#ifndef XXCBINT_H +#define XXCBINT_H #include -#include +#include +#include +#include "locking.h" /* really just want X11/Xthreads.h but can't have it. */ #define XCB_SEQUENCE_COMPARE(a,op,b) ((int) ((a) - (b)) op 0) #define assert_sequence_less(a,b) assert(XCB_SEQUENCE_COMPARE((a), <=, (b))) @@ -13,13 +15,17 @@ typedef struct PendingRequest PendingRequest; struct PendingRequest { PendingRequest *next; + xcondition_rec condition; + int waiters; /* Number of threads waiting; -1 if no wait needed */ unsigned int sequence; }; -typedef struct XCLPrivate { +typedef struct _X11XCBPrivate { + struct _XLockPtrs lock_fns; xcb_connection_t *connection; PendingRequest *pending_requests; PendingRequest **pending_requests_tail; + xcb_generic_event_t *next_event; const char *request_extra; int request_extra_size; char *partial_request; @@ -27,18 +33,18 @@ typedef struct XCLPrivate { char *reply_data; int reply_length; int reply_consumed; - int lock_count; enum XEventQueueOwner event_owner; XID next_xid; -} XCLPrivate; +} _X11XCBPrivate; -/* xcl/display.c */ +/* xcb_disp.c */ -int _XConnectSetupXCB(Display *dpy); int _XConnectXCB(Display *dpy, _Xconst char *display, char **fullnamep, int *screenp); -void _XFreeXCLStructure(Display *dpy); +void _XFreeX11XCBStructure(Display *dpy); -/* xcl/xcblock.c */ +/* xcb_lock.c */ + +int _XCBInitDisplayLock(Display *dpy); /* _XGetXCBBuffer and _XPutXCBBuffer calls must be paired and must not * be nested. */ @@ -46,8 +52,4 @@ void _XFreeXCLStructure(Display *dpy); void _XGetXCBBuffer(Display *dpy); void _XPutXCBBuffer(Display *dpy); -enum _XBufferCondition { _XBufferUnlocked, _XBufferLocked }; -void _XGetXCBBufferIf(Display *dpy, enum _XBufferCondition locked); -void _XPutXCBBufferIf(Display *dpy, enum _XBufferCondition locked); - -#endif /* XCLINT_H */ +#endif /* XXCBINT_H */ diff --git a/src/locking.c b/src/locking.c index bfb7d672..537ffa3f 100644 --- a/src/locking.c +++ b/src/locking.c @@ -202,7 +202,6 @@ static void _XLockDisplayWarn( } #endif /* XTHREADS_WARN */ -#if !USE_XCB #if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE) static void _XUnlockDisplay(dpy,file,line) Display *dpy; @@ -591,7 +590,6 @@ static int _XInitDisplayLock( return 0; } -#endif /* !USE_XCB */ #ifdef __UNIXWARE__ xthread_t __x11_thr_self() { return 0; } diff --git a/src/locking.h b/src/locking.h index 5a9bb6a0..96c99b97 100644 --- a/src/locking.h +++ b/src/locking.h @@ -40,13 +40,11 @@ in this Software without prior written authorization from The Open Group. #define xfree(s) Xfree(s) #include -#if !USE_XCB struct _XCVList { xcondition_t cv; xReply *buf; struct _XCVList *next; }; -#endif /* !USE_XCB */ extern xthread_t (*_Xthread_self_fn)( /* in XlibInt.c */ void @@ -54,7 +52,6 @@ extern xthread_t (*_Xthread_self_fn)( /* in XlibInt.c */ /* Display->lock is a pointer to one of these */ -#if !USE_XCB struct _XLockInfo { xmutex_t mutex; /* mutex for critical sections */ int reply_bytes_left; /* nbytes of the reply still to read */ @@ -147,7 +144,6 @@ struct _XLockInfo { #define ConditionBroadcast(d,c) if ((d)->lock) \ (*(d)->lock->condition_broadcast)(c) #endif -#endif /* !USE_XCB */ typedef struct _LockInfoRec { xmutex_t lock; @@ -157,10 +153,4 @@ typedef struct _LockInfoRec { extern int (*_XInitDisplayLock_fn)(Display *dpy); extern void (*_XFreeDisplayLock_fn)(Display *dpy); -/* xcl/xcblock.c */ -#if USE_XCB -int _XInitDisplayLock(Display *dpy); -void _XFreeDisplayLock(Display *dpy); -#endif /* USE_XCB */ - #endif /* _X_locking_H_ */ diff --git a/src/x11_xcb.c b/src/x11_xcb.c new file mode 100644 index 00000000..3ddf403b --- /dev/null +++ b/src/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 "Xxcbint.h" + +xcb_connection_t *XGetXCBConnection(Display *dpy) +{ + return dpy->xcb->connection; +} + +void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner) +{ + dpy->xcb->event_owner = owner; +} diff --git a/src/xcl/display.c b/src/xcb_disp.c similarity index 73% rename from src/xcl/display.c rename to src/xcb_disp.c index 81139886..1d8231a5 100644 --- a/src/xcl/display.c +++ b/src/xcb_disp.c @@ -1,15 +1,13 @@ -/* Copyright (C) 2003 Jamey Sharp. +/* 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" +#include "Xxcbint.h" #include #include #include #include -void _XFreeDisplayStructure(Display *dpy); - static xcb_auth_info_t xauth; static void *alloc_copy(const void *src, int *dstn, size_t n) @@ -28,11 +26,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); @@ -66,8 +59,8 @@ int _XConnectXCB(Display *dpy, _Xconst char *display, char **fullnamep, int *scr dpy->fd = -1; - dpy->xcl = Xcalloc(1, sizeof(XCLPrivate)); - if(!dpy->xcl) + dpy->xcb = Xcalloc(1, sizeof(_X11XCBPrivate)); + if(!dpy->xcb) return 0; if(!xcb_parse_display(display, &host, &n, screenp)) @@ -85,26 +78,24 @@ int _XConnectXCB(Display *dpy, _Xconst char *display, char **fullnamep, int *scr c = xcb_connect(display, 0); _XUnlockMutex(_Xglobal_lock); - if(!c) - return 0; - dpy->fd = xcb_get_file_descriptor(c); - dpy->xcl->connection = c; - dpy->xcl->pending_requests_tail = &dpy->xcl->pending_requests; - dpy->xcl->next_xid = xcb_generate_id(dpy->xcl->connection); - return 1; + dpy->xcb->connection = c; + dpy->xcb->pending_requests_tail = &dpy->xcb->pending_requests; + dpy->xcb->next_xid = xcb_generate_id(dpy->xcb->connection); + + return !xcb_connection_has_error(c); } -void _XFreeXCLStructure(Display *dpy) +void _XFreeX11XCBStructure(Display *dpy) { /* reply_data was allocated by system malloc, not Xmalloc */ - free(dpy->xcl->reply_data); - while(dpy->xcl->pending_requests) + free(dpy->xcb->reply_data); + while(dpy->xcb->pending_requests) { - PendingRequest *tmp = dpy->xcl->pending_requests; - dpy->xcl->pending_requests = tmp->next; + PendingRequest *tmp = dpy->xcb->pending_requests; + dpy->xcb->pending_requests = tmp->next; free(tmp); } - Xfree(dpy->xcl); + Xfree(dpy->xcb); } diff --git a/src/xcb_io.c b/src/xcb_io.c new file mode 100644 index 00000000..d40ac102 --- /dev/null +++ b/src/xcb_io.c @@ -0,0 +1,487 @@ +/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett + * This file is licensed under the MIT license. See the file COPYING. */ + +#include "Xlibint.h" +#include "locking.h" +#include "Xxcbint.h" +#include +#include + +#include +#include +#include + +/* Call internal connection callbacks for any fds that are currently + * ready to read. This function will not block unless one of the + * callbacks blocks. + * + * This code borrowed from _XWaitForReadable. Inverse call tree: + * _XRead + * _XWaitForWritable + * _XFlush + * _XSend + * _XEventsQueued + * _XReadEvents + * _XRead[0-9]+ + * _XAllocIDs + * _XReply + * _XEatData + * _XReadPad + */ +static void check_internal_connections(Display *dpy) +{ + struct _XConnectionInfo *ilist; + fd_set r_mask; + struct timeval tv; + int result; + int highest_fd = -1; + + if(dpy->flags & XlibDisplayProcConni || !dpy->im_fd_info) + return; + + FD_ZERO(&r_mask); + for(ilist = dpy->im_fd_info; ilist; ilist = ilist->next) + { + assert(ilist->fd >= 0); + FD_SET(ilist->fd, &r_mask); + if(ilist->fd > highest_fd) + highest_fd = ilist->fd; + } + assert(highest_fd >= 0); + + tv.tv_sec = 0; + tv.tv_usec = 0; + result = select(highest_fd + 1, &r_mask, NULL, NULL, &tv); + + if(result == -1) + { + if(errno == EINTR) + return; + _XIOError(dpy); + } + + for(ilist = dpy->im_fd_info; result && ilist; ilist = ilist->next) + if(FD_ISSET(ilist->fd, &r_mask)) + { + _XProcessInternalConnection(dpy, ilist); + --result; + } +} + +static void condition_wait(Display *dpy, xcondition_t cv) +{ + _XPutXCBBuffer(dpy); + xcb_xlib_unlock(dpy->xcb->connection); + ConditionWait(dpy, cv); + xcb_xlib_lock(dpy->xcb->connection); + _XGetXCBBuffer(dpy); +} + +static void handle_event(Display *dpy, xcb_generic_event_t *e) +{ + if(!e) + _XIOError(dpy); + dpy->last_request_read = e->full_sequence; + if(e->response_type == X_Error) + _XError(dpy, (xError *) e); + else + _XEnq(dpy, (xEvent *) e); + free(e); +} + +static void call_handlers(Display *dpy, xcb_generic_reply_t *buf) +{ + _XAsyncHandler *async, *next; + for(async = dpy->async_handlers; async; async = next) + { + next = async->next; + if(async->handler(dpy, (xReply *) buf, (char *) buf, sizeof(xReply) + (buf->length << 2), async->data)) + return; + } + if(buf->response_type == 0) /* unhandled error */ + _XError(dpy, (xError *) buf); +} + +static xcb_generic_event_t * wait_or_poll_for_event(Display *dpy, int wait) +{ + xcb_connection_t *c = dpy->xcb->connection; + xcb_generic_event_t *event; + if(wait && !dpy->head) + { + UnlockDisplay(dpy); + event = xcb_wait_for_event(c); + LockDisplay(dpy); + } + else + event = xcb_poll_for_event(c); + return event; +} + +static void process_responses(Display *dpy, int wait_for_first_event, xcb_generic_error_t **current_error, unsigned int current_request) +{ + void *reply; + xcb_generic_event_t *event = dpy->xcb->next_event; + xcb_generic_error_t *error; + PendingRequest *req; + xcb_connection_t *c = dpy->xcb->connection; + if(!event && dpy->xcb->event_owner == XlibOwnsEventQueue) + event = wait_or_poll_for_event(dpy, wait_for_first_event); + + while(1) + { + req = dpy->xcb->pending_requests; + assert(!(req && current_request && !XCB_SEQUENCE_COMPARE(req->sequence, <=, current_request))); + if(event && (!req || XCB_SEQUENCE_COMPARE(event->full_sequence, <=, req->sequence))) + { + if(current_error && event->response_type == 0 && event->full_sequence == current_request) + { + *current_error = (xcb_generic_error_t *) event; + event = 0; + break; + } + handle_event(dpy, event); + event = wait_or_poll_for_event(dpy, wait_for_first_event); + } + else if(req && req->waiters != -1) + { + if(req->sequence == current_request) + break; + if(!current_request && !(wait_for_first_event && !dpy->head)) + break; + dpy->xcb->next_event = event; + req->waiters++; + assert(req->waiters > 0); + condition_wait(dpy, &req->condition); + if(--req->waiters == 0) + free(req); + event = dpy->xcb->next_event; + } + else if(req && xcb_poll_for_reply(dpy->xcb->connection, req->sequence, &reply, &error)) + { + dpy->xcb->pending_requests = req->next; + if(!dpy->xcb->pending_requests) + dpy->xcb->pending_requests_tail = &dpy->xcb->pending_requests; + if(!reply) + reply = error; + if(reply) + { + dpy->last_request_read = req->sequence; + call_handlers(dpy, reply); + } + free(req); + free(reply); + } + else + break; + } + + dpy->xcb->next_event = event; + + if(xcb_connection_has_error(c)) + _XIOError(dpy); + + assert_sequence_less(dpy->last_request_read, dpy->request); + assert(!wait_for_first_event || dpy->head); +} + +int _XEventsQueued(Display *dpy, int mode) +{ + if(dpy->xcb->event_owner != XlibOwnsEventQueue) + return 0; + + if(mode == QueuedAfterFlush) + _XSend(dpy, 0, 0); + else + check_internal_connections(dpy); + process_responses(dpy, 0, 0, 0); + return dpy->qlen; +} + +/* _XReadEvents - Flush the output queue, + * then read as many events as possible (but at least 1) and enqueue them + */ +void _XReadEvents(Display *dpy) +{ + _XSend(dpy, 0, 0); + if(dpy->xcb->event_owner != XlibOwnsEventQueue) + return; + check_internal_connections(dpy); + process_responses(dpy, 1, 0, 0); +} + +/* + * _XSend - Flush the buffer and send the client data. 32 bit word aligned + * transmission is used, if size is not 0 mod 4, extra bytes are transmitted. + * + * Note that the connection must not be read from once the data currently + * in the buffer has been written. + */ +void _XSend(Display *dpy, const char *data, long size) +{ + xcb_connection_t *c = dpy->xcb->connection; + + assert(!dpy->xcb->request_extra); + dpy->xcb->request_extra = data; + dpy->xcb->request_extra_size = size; + + /* give dpy->buffer to XCB */ + _XPutXCBBuffer(dpy); + + if(xcb_flush(c) <= 0) + _XIOError(dpy); + + /* get a new dpy->buffer */ + _XGetXCBBuffer(dpy); + + check_internal_connections(dpy); + + /* A straight port of XlibInt.c would call _XSetSeqSyncFunction + * here. However that does no good: unlike traditional Xlib, + * Xlib/XCB almost never calls _XFlush because _XPutXCBBuffer + * automatically pushes requests down into XCB, so Xlib's buffer + * is empty most of the time. Since setting a synchandler has no + * effect until after UnlockDisplay returns, we may as well do + * the check in _XUnlockDisplay. */ +} + +/* + * _XFlush - Flush the X request buffer. If the buffer is empty, no + * action is taken. + */ +void _XFlush(Display *dpy) +{ + _XSend(dpy, 0, 0); + + _XEventsQueued(dpy, QueuedAfterReading); +} + +static int +_XIDHandler(Display *dpy) +{ + XID next = xcb_generate_id(dpy->xcb->connection); + LockDisplay(dpy); + dpy->xcb->next_xid = next; + if(dpy->flags & XlibDisplayPrivSync) + { + dpy->synchandler = dpy->savedsynchandler; + dpy->flags &= ~XlibDisplayPrivSync; + } + UnlockDisplay(dpy); + SyncHandle(); + return 0; +} + +/* _XAllocID - resource ID allocation routine. */ +XID _XAllocID(Display *dpy) +{ + XID ret = dpy->xcb->next_xid; + dpy->xcb->next_xid = 0; + + assert(!(dpy->flags & XlibDisplayPrivSync)); + dpy->savedsynchandler = dpy->synchandler; + dpy->flags |= XlibDisplayPrivSync; + dpy->synchandler = _XIDHandler; + return ret; +} + +/* _XAllocIDs - multiple resource ID allocation routine. */ +void _XAllocIDs(Display *dpy, XID *ids, int count) +{ + int i; + _XPutXCBBuffer(dpy); + for (i = 0; i < count; i++) + ids[i] = xcb_generate_id(dpy->xcb->connection); + _XGetXCBBuffer(dpy); +} + +static void _XFreeReplyData(Display *dpy, Bool force) +{ + if(!force && dpy->xcb->reply_consumed < dpy->xcb->reply_length) + return; + free(dpy->xcb->reply_data); + dpy->xcb->reply_data = 0; +} + +static PendingRequest * insert_pending_request(Display *dpy) +{ + PendingRequest **cur = &dpy->xcb->pending_requests; + while(*cur && XCB_SEQUENCE_COMPARE((*cur)->sequence, <, dpy->request)) + cur = &((*cur)->next); + if(*cur && (*cur)->sequence == dpy->request) + { + /* Replacing an existing PendingRequest should only happen once, + when calling _XReply, and the replaced PendingRequest must + not have a condition set. */ + assert((*cur)->waiters == -1); + } + else + { + PendingRequest *node = malloc(sizeof(PendingRequest)); + assert(node); + node->next = *cur; + node->sequence = dpy->request; + if(cur == dpy->xcb->pending_requests_tail) + dpy->xcb->pending_requests_tail = &(node->next); + *cur = node; + } + (*cur)->waiters = 0; + xcondition_init(&((*cur)->condition)); + return *cur; +} + +static void remove_pending_request(Display *dpy, PendingRequest *node) +{ + PendingRequest **cur = &dpy->xcb->pending_requests; + while(*cur && *cur != node) + cur = &((*cur)->next); + if(*cur == node) + *cur = node->next; + if(!dpy->xcb->pending_requests) + dpy->xcb->pending_requests_tail = &dpy->xcb->pending_requests; +} + +/* + * _XReply - Wait for a reply packet and copy its contents into the + * specified rep. + * extra: number of 32-bit words expected after the reply + * discard: should I discard data following "extra" words? + */ +Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard) +{ + xcb_generic_error_t *error; + xcb_connection_t *c = dpy->xcb->connection; + char *reply; + PendingRequest *current; + unsigned int current_sequence; + + assert(!dpy->xcb->reply_data); + + /* Internals of UnlockDisplay done by hand here, so that we can + insert_pending_request *after* we _XPutXCBBuffer, but before we + unlock the display. */ + _XPutXCBBuffer(dpy); + current = insert_pending_request(dpy); + xcb_xlib_unlock(dpy->xcb->connection); + if(dpy->xcb->lock_fns.unlock_display) + dpy->xcb->lock_fns.unlock_display(dpy); + reply = xcb_wait_for_reply(c, current->sequence, &error); + LockDisplay(dpy); + + check_internal_connections(dpy); + process_responses(dpy, 0, &error, current->sequence); + + current_sequence = current->sequence; + + remove_pending_request(dpy, current); + if(current->waiters) + { /* The ConditionBroadcast macro contains an if; braces needed here. */ + ConditionBroadcast(dpy, ¤t->condition); + } + else + { + free(current); + current = NULL; + } + + if(error) + { + _XExtension *ext; + xError *err = (xError *) error; + int ret_code; + + dpy->last_request_read = error->full_sequence; + + /* Xlib is evil and assumes that even errors will be + * copied into rep. */ + memcpy(rep, error, 32); + + /* do not die on "no such font", "can't allocate", + "can't grab" failures */ + switch(err->errorCode) + { + case BadName: + switch(err->majorCode) + { + case X_LookupColor: + case X_AllocNamedColor: + return 0; + } + break; + case BadFont: + if(err->majorCode == X_QueryFont) + return 0; + break; + case BadAlloc: + case BadAccess: + return 0; + } + + /* + * we better see if there is an extension who may + * want to suppress the error. + */ + for(ext = dpy->ext_procs; ext; ext = ext->next) + if(ext->error && ext->error(dpy, err, &ext->codes, &ret_code)) + return ret_code; + + _XError(dpy, (xError *) error); + return 0; + } + + /* it's not an error, but we don't have a reply, so it's an I/O + * error. */ + if(!reply) + { + _XIOError(dpy); + return 0; + } + + dpy->last_request_read = current_sequence; + + /* there's no error and we have a reply. */ + dpy->xcb->reply_data = reply; + dpy->xcb->reply_consumed = sizeof(xReply) + (extra * 4); + dpy->xcb->reply_length = sizeof(xReply); + if(dpy->xcb->reply_data[0] == 1) + dpy->xcb->reply_length += (((xcb_generic_reply_t *) dpy->xcb->reply_data)->length * 4); + + /* error: Xlib asks too much. give them what we can anyway. */ + if(dpy->xcb->reply_length < dpy->xcb->reply_consumed) + dpy->xcb->reply_consumed = dpy->xcb->reply_length; + + memcpy(rep, dpy->xcb->reply_data, dpy->xcb->reply_consumed); + _XFreeReplyData(dpy, discard); + return 1; +} + +int _XRead(Display *dpy, char *data, long size) +{ + assert(size >= 0); + if(size == 0) + return 0; + assert(dpy->xcb->reply_data != 0); + assert(dpy->xcb->reply_consumed + size <= dpy->xcb->reply_length); + memcpy(data, dpy->xcb->reply_data + dpy->xcb->reply_consumed, size); + dpy->xcb->reply_consumed += size; + _XFreeReplyData(dpy, False); + return 0; +} + +/* + * _XReadPad - Read bytes from the socket taking into account incomplete + * reads. If the number of bytes is not 0 mod 4, read additional pad + * bytes. + */ +void _XReadPad(Display *dpy, char *data, long size) +{ + _XRead(dpy, data, size); + dpy->xcb->reply_consumed += -size & 3; + _XFreeReplyData(dpy, False); +} + +/* Read and discard "n" 8-bit bytes of data */ +void _XEatData(Display *dpy, unsigned long n) +{ + dpy->xcb->reply_consumed += n; + _XFreeReplyData(dpy, False); +} diff --git a/src/xcb_lock.c b/src/xcb_lock.c new file mode 100644 index 00000000..fab8b441 --- /dev/null +++ b/src/xcb_lock.c @@ -0,0 +1,220 @@ +/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett + * This file is licensed under the MIT license. See the file COPYING. */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "Xlibint.h" +#include "locking.h" +#include "Xxcbint.h" +#include +#include + +#include + +static void _XCBLockDisplay(Display *dpy) +{ + if(dpy->xcb->lock_fns.lock_display) + dpy->xcb->lock_fns.lock_display(dpy); + xcb_xlib_lock(dpy->xcb->connection); + _XGetXCBBuffer(dpy); +} + +static void _XCBUnlockDisplay(Display *dpy) +{ + _XPutXCBBuffer(dpy); + assert(dpy->xcb->partial_request == 0); + assert(xcb_get_request_sent(dpy->xcb->connection) == dpy->request); + + /* Traditional Xlib does this in _XSend; see the Xlib/XCB version + * of that function for why we do it here instead. */ + _XSetSeqSyncFunction(dpy); + + xcb_xlib_unlock(dpy->xcb->connection); + if(dpy->xcb->lock_fns.unlock_display) + dpy->xcb->lock_fns.unlock_display(dpy); +} + +int _XCBInitDisplayLock(Display *dpy) +{ + if(!dpy->lock_fns && !(dpy->lock_fns = Xcalloc(1, sizeof(*dpy->lock_fns)))) + return 0; + dpy->xcb->lock_fns.lock_display = dpy->lock_fns->lock_display; + dpy->lock_fns->lock_display = _XCBLockDisplay; + dpy->xcb->lock_fns.unlock_display = dpy->lock_fns->unlock_display; + dpy->lock_fns->unlock_display = _XCBUnlockDisplay; + return 1; +} + +void _XGetXCBBuffer(Display *dpy) +{ + static const xReq dummy_request; + unsigned int xcb_req = xcb_get_request_sent(dpy->xcb->connection); + if(xcb_connection_has_error(dpy->xcb->connection)) + _XIOError(dpy); + + /* if Xlib has a partial request pending then XCB doesn't know about + * the current request yet */ + if(dpy->xcb->partial_request) + ++xcb_req; + + assert(XCB_SEQUENCE_COMPARE(xcb_req, >=, dpy->request)); + dpy->request = xcb_req; + + dpy->last_req = (char *) &dummy_request; +} + +static size_t request_length(struct iovec *vec) +{ + /* we have at least part of a request. dig out the length field. + * note that length fields are always in vec[0]: Xlib doesn't split + * fixed-length request parts. */ + size_t len; + assert(vec[0].iov_len >= 4); + len = ((uint16_t *) vec[0].iov_base)[1]; + if(len == 0) + { + /* it's a bigrequest. dig out the *real* length field. */ + assert(vec[0].iov_len >= 8); + len = ((uint32_t *) vec[0].iov_base)[1]; + } + return len << 2; +} + +static inline int issue_complete_request(Display *dpy, int veclen, struct iovec *vec) +{ + xcb_protocol_request_t xcb_req = { 0 }; + unsigned int sequence; + int flags = XCB_REQUEST_RAW; + int i; + size_t len; + + /* skip empty iovecs. if no iovecs remain, we're done. */ + assert(veclen >= 0); + while(veclen > 0 && vec[0].iov_len == 0) + --veclen, ++vec; + if(!veclen) + return 0; + + len = request_length(vec); + + /* do we have enough data for a complete request? how many iovec + * elements does it span? */ + for(i = 0; i < veclen; ++i) + { + size_t oldlen = len; + len -= vec[i].iov_len; + /* if len is now 0 or has wrapped, we have enough data. */ + if((len - 1) > oldlen) + break; + } + if(i == veclen) + return 0; + + /* we have enough data to issue one complete request. the remaining + * code can't fail. */ + + /* len says how far we overshot our data needs. (it's "negative" if + * we actually overshot, or 0 if we're right on.) */ + vec[i].iov_len += len; + xcb_req.count = i + 1; + xcb_req.opcode = ((uint8_t *) vec[0].iov_base)[0]; + + /* if we don't own the event queue, we have to ask XCB to set our + * errors aside for us. */ + if(dpy->xcb->event_owner != XlibOwnsEventQueue) + flags |= XCB_REQUEST_CHECKED; + + /* XCB will always skip request 0; account for that in the Xlib count */ + if (xcb_get_request_sent(dpy->xcb->connection) == 0xffffffff) + dpy->request++; + /* send the accumulated request. */ + sequence = xcb_send_request(dpy->xcb->connection, flags, vec, &xcb_req); + if(!sequence) + _XIOError(dpy); + + /* update the iovecs to refer only to data not yet sent. */ + vec[i].iov_len = -len; + + /* iff we asked XCB to set aside errors, we must pick those up + * eventually. iff there are async handlers, we may have just + * issued requests that will generate replies. in either case, + * we need to remember to check later. */ + if(flags & XCB_REQUEST_CHECKED || dpy->async_handlers) + { + PendingRequest *req = malloc(sizeof(PendingRequest)); + assert(req); + req->next = 0; + req->waiters = -1; + req->sequence = sequence; + *dpy->xcb->pending_requests_tail = req; + dpy->xcb->pending_requests_tail = &req->next; + } + return 1; +} + +void _XPutXCBBuffer(Display *dpy) +{ + static char const pad[3]; + const int padsize = -dpy->xcb->request_extra_size & 3; + xcb_connection_t *c = dpy->xcb->connection; + _XExtension *ext; + struct iovec iov[6]; + + assert_sequence_less(dpy->last_request_read, dpy->request); + assert_sequence_less(xcb_get_request_sent(c), dpy->request); + + for(ext = dpy->flushes; ext; ext = ext->next_flush) + { + ext->before_flush(dpy, &ext->codes, dpy->buffer, dpy->bufptr - dpy->buffer); + if(dpy->xcb->request_extra) + { + ext->before_flush(dpy, &ext->codes, dpy->xcb->request_extra, dpy->xcb->request_extra_size); + if(padsize) + ext->before_flush(dpy, &ext->codes, pad, padsize); + } + } + + iov[2].iov_base = dpy->xcb->partial_request; + iov[2].iov_len = dpy->xcb->partial_request_offset; + iov[3].iov_base = dpy->buffer; + iov[3].iov_len = dpy->bufptr - dpy->buffer; + iov[4].iov_base = (caddr_t) dpy->xcb->request_extra; + iov[4].iov_len = dpy->xcb->request_extra_size; + iov[5].iov_base = (caddr_t) pad; + iov[5].iov_len = padsize; + + while(issue_complete_request(dpy, 4, iov + 2)) + /* empty */; + + /* first discard any completed partial_request. */ + if(iov[2].iov_len == 0 && dpy->xcb->partial_request) + { + free(dpy->xcb->partial_request); + dpy->xcb->partial_request = 0; + dpy->xcb->partial_request_offset = 0; + } + + /* is there anything to copy into partial_request? */ + if(iov[3].iov_len != 0 || iov[4].iov_len != 0 || iov[5].iov_len != 0) + { + int i; + if(!dpy->xcb->partial_request) + { + size_t len = request_length(iov + 3); + assert(!dpy->xcb->partial_request_offset); + dpy->xcb->partial_request = malloc(len); + assert(dpy->xcb->partial_request); + } + for(i = 3; i < sizeof(iov) / sizeof(*iov); ++i) + { + memcpy(dpy->xcb->partial_request + dpy->xcb->partial_request_offset, iov[i].iov_base, iov[i].iov_len); + dpy->xcb->partial_request_offset += iov[i].iov_len; + } + } + + dpy->xcb->request_extra = 0; + dpy->xcb->request_extra_size = 0; + dpy->bufptr = dpy->buffer; +} diff --git a/src/xcl/io.c b/src/xcl/io.c deleted file mode 100644 index 0e8e75fc..00000000 --- a/src/xcl/io.c +++ /dev/null @@ -1,349 +0,0 @@ -/* Copyright (C) 2003-2004 Jamey Sharp. - * This file is licensed under the MIT license. See the file COPYING. */ - -#include "Xlibint.h" -#include "xclint.h" -#include -#include - -#include -#include -#include - -/* Call internal connection callbacks for any fds that are currently - * ready to read. This function will not block unless one of the - * callbacks blocks. - * - * This code borrowed from _XWaitForReadable. Inverse call tree: - * _XRead - * _XWaitForWritable - * _XFlush - * _XSend - * _XEventsQueued - * _XReadEvents - * _XRead[0-9]+ - * _XAllocIDs - * _XReply - * _XEatData - * _XReadPad - */ -static void check_internal_connections(Display *dpy) -{ - struct _XConnectionInfo *ilist; - fd_set r_mask; - struct timeval tv; - int result; - int highest_fd = -1; - - if(dpy->flags & XlibDisplayProcConni || !dpy->im_fd_info) - return; - - FD_ZERO(&r_mask); - for(ilist = dpy->im_fd_info; ilist; ilist = ilist->next) - { - assert(ilist->fd >= 0); - FD_SET(ilist->fd, &r_mask); - if(ilist->fd > highest_fd) - highest_fd = ilist->fd; - } - assert(highest_fd >= 0); - - tv.tv_sec = 0; - tv.tv_usec = 0; - result = select(highest_fd + 1, &r_mask, NULL, NULL, &tv); - - if(result == -1) - { - if(errno == EINTR) - return; - _XIOError(dpy); - } - - for(ilist = dpy->im_fd_info; result && ilist; ilist = ilist->next) - if(FD_ISSET(ilist->fd, &r_mask)) - { - _XProcessInternalConnection(dpy, ilist); - --result; - } -} - -static void handle_event(Display *dpy, xcb_generic_event_t *e) -{ - if(!e) - _XIOError(dpy); - dpy->last_request_read = e->full_sequence; - if(e->response_type == X_Error) - _XError(dpy, (xError *) e); - else - _XEnq(dpy, (xEvent *) 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; - xcb_generic_event_t *e; - int ret; - if(dpy->xcl->event_owner != XlibOwnsEventQueue) - return 0; - - c = dpy->xcl->connection; - if(mode == QueuedAfterFlush) - _XSend(dpy, 0, 0); - else - check_internal_connections(dpy); - while((e = xcb_poll_for_event(c, &ret))) - handle_event(dpy, e); - if(ret) - _XIOError(dpy); - return dpy->qlen; -} - -/* _XReadEvents - Flush the output queue, - * then read as many events as possible (but at least 1) and enqueue them - */ -void _XReadEvents(Display *dpy) -{ - _XSend(dpy, 0, 0); - if(dpy->xcl->event_owner != XlibOwnsEventQueue) - return; - handle_event(dpy, xcb_wait_for_event(dpy->xcl->connection)); - _XEventsQueued(dpy, QueuedAfterReading); -} - -/* - * _XSend - Flush the buffer and send the client data. 32 bit word aligned - * transmission is used, if size is not 0 mod 4, extra bytes are transmitted. - * - * Note that the connection must not be read from once the data currently - * in the buffer has been written. - */ -void _XSend(Display *dpy, const char *data, long size) -{ - xcb_connection_t *c = dpy->xcl->connection; - - assert(!dpy->xcl->request_extra); - dpy->xcl->request_extra = data; - dpy->xcl->request_extra_size = size; - - /* give dpy->buffer to XCB */ - _XPutXCBBuffer(dpy); - - if(xcb_flush(c) <= 0) - _XIOError(dpy); - - /* get a new dpy->buffer */ - _XGetXCBBuffer(dpy); - - check_internal_connections(dpy); - - /* A straight port of XlibInt.c would call _XSetSeqSyncFunction - * here. However that does no good: unlike traditional Xlib, - * Xlib/XCB almost never calls _XFlush because _XPutXCBBuffer - * automatically pushes requests down into XCB, so Xlib's buffer - * is empty most of the time. Since setting a synchandler has no - * effect until after UnlockDisplay returns, we may as well do - * the check in _XUnlockDisplay. */ -} - -/* - * _XFlush - Flush the X request buffer. If the buffer is empty, no - * action is taken. - */ -void _XFlush(Display *dpy) -{ - _XSend(dpy, 0, 0); - - _XEventsQueued(dpy, QueuedAfterReading); -} - -static int -_XIDHandler(Display *dpy) -{ - XID next = xcb_generate_id(dpy->xcl->connection); - LockDisplay(dpy); - dpy->xcl->next_xid = next; - if(dpy->flags & XlibDisplayPrivSync) - { - dpy->synchandler = dpy->savedsynchandler; - dpy->flags &= ~XlibDisplayPrivSync; - } - UnlockDisplay(dpy); - SyncHandle(); - return 0; -} - -/* _XAllocID - resource ID allocation routine. */ -XID _XAllocID(Display *dpy) -{ - XID ret = dpy->xcl->next_xid; - dpy->xcl->next_xid = 0; - - assert(!(dpy->flags & XlibDisplayPrivSync)); - dpy->savedsynchandler = dpy->synchandler; - dpy->flags |= XlibDisplayPrivSync; - dpy->synchandler = _XIDHandler; - return ret; -} - -/* _XAllocIDs - multiple resource ID allocation routine. */ -void _XAllocIDs(Display *dpy, XID *ids, int count) -{ - int i; - _XPutXCBBuffer(dpy); - for (i = 0; i < count; i++) - ids[i] = xcb_generate_id(dpy->xcl->connection); - _XGetXCBBuffer(dpy); -} - -static void _XFreeReplyData(Display *dpy, Bool force) -{ - if(!force && dpy->xcl->reply_consumed < dpy->xcl->reply_length) - return; - free(dpy->xcl->reply_data); - dpy->xcl->reply_data = 0; -} - -/* - * _XReply - Wait for a reply packet and copy its contents into the - * specified rep. - * extra: number of 32-bit words expected after the reply - * discard: should I discard data following "extra" words? - */ -Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard) -{ - xcb_generic_error_t *error; - xcb_connection_t *c = dpy->xcl->connection; - unsigned long request = dpy->request; - char *reply; - - assert(!dpy->xcl->reply_data); - - UnlockDisplay(dpy); - /* release buffer if UnlockDisplay didn't already */ - _XPutXCBBufferIf(dpy, _XBufferLocked); - reply = xcb_wait_for_reply(c, request, &error); - /* re-acquire buffer if LockDisplay won't otherwise */ - _XGetXCBBufferIf(dpy, _XBufferLocked); - LockDisplay(dpy); - - check_internal_connections(dpy); - - if(dpy->xcl->event_owner == XlibOwnsEventQueue) - { - xcb_generic_event_t *e; - int ret; - while((e = xcb_poll_for_event(c, &ret))) - if(e->response_type == 0 && e->full_sequence == request) - error = (xcb_generic_error_t *) e; - else - handle_event(dpy, e); - } - - if(error) - { - _XExtension *ext; - xError *err = (xError *) error; - int ret_code; - - dpy->last_request_read = error->full_sequence; - - /* Xlib is evil and assumes that even errors will be - * copied into rep. */ - memcpy(rep, error, 32); - - /* do not die on "no such font", "can't allocate", - "can't grab" failures */ - switch(err->errorCode) - { - case BadName: - switch(err->majorCode) - { - case X_LookupColor: - case X_AllocNamedColor: - return 0; - } - break; - case BadFont: - if(err->majorCode == X_QueryFont) - return 0; - break; - case BadAlloc: - case BadAccess: - return 0; - } - - /* - * we better see if there is an extension who may - * want to suppress the error. - */ - for(ext = dpy->ext_procs; ext; ext = ext->next) - if(ext->error && ext->error(dpy, err, &ext->codes, &ret_code)) - return ret_code; - - _XError(dpy, (xError *) error); - return 0; - } - - /* it's not an error, but we don't have a reply, so it's an I/O - * error. */ - if(!reply) - { - _XIOError(dpy); - return 0; - } - - dpy->last_request_read = request; - - /* there's no error and we have a reply. */ - dpy->xcl->reply_data = reply; - dpy->xcl->reply_consumed = sizeof(xReply) + (extra * 4); - dpy->xcl->reply_length = sizeof(xReply); - if(dpy->xcl->reply_data[0] == 1) - dpy->xcl->reply_length += (((xcb_generic_reply_t *) dpy->xcl->reply_data)->length * 4); - - /* error: Xlib asks too much. give them what we can anyway. */ - if(dpy->xcl->reply_length < dpy->xcl->reply_consumed) - dpy->xcl->reply_consumed = dpy->xcl->reply_length; - - memcpy(rep, dpy->xcl->reply_data, dpy->xcl->reply_consumed); - _XFreeReplyData(dpy, discard); - return 1; -} - -int _XRead(Display *dpy, char *data, long size) -{ - assert(size >= 0); - if(size == 0) - return 0; - assert(dpy->xcl->reply_data != 0); - assert(dpy->xcl->reply_consumed + size <= dpy->xcl->reply_length); - memcpy(data, dpy->xcl->reply_data + dpy->xcl->reply_consumed, size); - dpy->xcl->reply_consumed += size; - _XFreeReplyData(dpy, False); - return 0; -} - -/* - * _XReadPad - Read bytes from the socket taking into account incomplete - * reads. If the number of bytes is not 0 mod 4, read additional pad - * bytes. - */ -void _XReadPad(Display *dpy, char *data, long size) -{ - _XRead(dpy, data, size); - dpy->xcl->reply_consumed += -size & 3; - _XFreeReplyData(dpy, False); -} - -/* Read and discard "n" 8-bit bytes of data */ -void _XEatData(Display *dpy, unsigned long n) -{ - dpy->xcl->reply_consumed += n; - _XFreeReplyData(dpy, False); -} diff --git a/src/xcl/xcblock.c b/src/xcl/xcblock.c deleted file mode 100644 index 9eb410c3..00000000 --- a/src/xcl/xcblock.c +++ /dev/null @@ -1,320 +0,0 @@ -/* Copyright (C) 2003-2004 Jamey Sharp. - * This file is licensed under the MIT license. See the file COPYING. */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#if HAVE_FEATURES_H -#define _GNU_SOURCE /* for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP */ -#include -#endif - -#include "Xlibint.h" -#include "locking.h" -#include "xclint.h" -#include -#include - -#include - -static void _XLockDisplay(Display *dpy) -{ - pthread_mutex_lock(xcb_get_io_lock(dpy->xcl->connection)); - _XGetXCBBufferIf(dpy, _XBufferUnlocked); - ++dpy->xcl->lock_count; -} - -void XLockDisplay(Display* dpy) -{ - LockDisplay(dpy); - /* We want the threads in the reply queue to all get out before - * XLockDisplay returns, in case they have any side effects the - * caller of XLockDisplay was trying to protect against. - * XLockDisplay puts itself at the head of the event waiters queue - * to wait for all the replies to come in. - * TODO: Restore this behavior on XCB. - */ -} - -static void _XUnlockDisplay(Display *dpy) -{ - --dpy->xcl->lock_count; - _XPutXCBBufferIf(dpy, _XBufferUnlocked); - - /* If we're unlocking all the way, make sure that our deferred - * invariants hold. */ - if(!dpy->xcl->lock_count) - { - assert(dpy->xcl->partial_request == 0); - assert(xcb_get_request_sent(dpy->xcl->connection) == dpy->request); - - /* Traditional Xlib does this in _XSend; see the Xlib/XCB version - * of that function for why we do it here instead. */ - _XSetSeqSyncFunction(dpy); - } - - pthread_mutex_unlock(xcb_get_io_lock(dpy->xcl->connection)); -} - -void XUnlockDisplay(Display* dpy) -{ - UnlockDisplay(dpy); -} - -/* returns 0 if initialized ok, -1 if unable to allocate - a mutex or other memory */ -int _XInitDisplayLock(Display *dpy) -{ -#ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP - pthread_mutex_t lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; - *xcb_get_io_lock(dpy->xcl->connection) = lock; -#else - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(xcb_get_io_lock(dpy->xcl->connection), &attr); - pthread_mutexattr_destroy(&attr); -#endif - - dpy->lock_fns = (struct _XLockPtrs*)Xmalloc(sizeof(struct _XLockPtrs)); - if (dpy->lock_fns == NULL) - return -1; - - dpy->lock = 0; - dpy->lock_fns->lock_display = _XLockDisplay; - dpy->lock_fns->unlock_display = _XUnlockDisplay; - - return 0; -} - -void _XFreeDisplayLock(Display *dpy) -{ - assert(dpy->lock == NULL); - if (dpy->lock_fns != NULL) { - Xfree((char *)dpy->lock_fns); - dpy->lock_fns = NULL; - } -} - -static void call_handlers(Display *dpy, xcb_generic_reply_t *buf) -{ - _XAsyncHandler *async, *next; - for(async = dpy->async_handlers; async; async = next) - { - next = async->next; - if(async->handler(dpy, (xReply *) buf, (char *) buf, sizeof(xReply) + (buf->length << 2), async->data)) - return; - } - if(buf->response_type == 0) /* unhandled error */ - _XError(dpy, (xError *) buf); -} - -void _XGetXCBBuffer(Display *dpy) -{ - static const xReq dummy_request; - unsigned int xcb_req; - void *reply; - xcb_generic_error_t *error; - PendingRequest *req; - - xcb_connection_t *c = dpy->xcl->connection; - - dpy->last_req = (char *) &dummy_request; - - xcb_req = xcb_get_request_sent(c); - /* if Xlib has a partial request pending then XCB doesn't know about - * the current request yet */ - if(dpy->xcl->partial_request) - ++xcb_req; - - assert(XCB_SEQUENCE_COMPARE(xcb_req, >=, dpy->request)); - dpy->request = xcb_req; - - while((req = dpy->xcl->pending_requests) - && dpy->request != req->sequence - && xcb_poll_for_reply(c, req->sequence, &reply, &error)) - { - dpy->xcl->pending_requests = req->next; - if(!reply) - reply = error; - if(reply) - { - dpy->last_request_read = req->sequence; - call_handlers(dpy, reply); - } - free(req); - free(reply); - } - if(!dpy->xcl->pending_requests) - dpy->xcl->pending_requests_tail = &dpy->xcl->pending_requests; - - assert_sequence_less(dpy->last_request_read, dpy->request); -} - -static size_t request_length(struct iovec *vec) -{ - /* we have at least part of a request. dig out the length field. - * note that length fields are always in vec[0]: Xlib doesn't split - * fixed-length request parts. */ - size_t len; - assert(vec[0].iov_len >= 4); - len = ((uint16_t *) vec[0].iov_base)[1]; - if(len == 0) - { - /* it's a bigrequest. dig out the *real* length field. */ - assert(vec[0].iov_len >= 8); - len = ((uint32_t *) vec[0].iov_base)[1]; - } - return len << 2; -} - -static inline int issue_complete_request(Display *dpy, int veclen, struct iovec *vec) -{ - xcb_protocol_request_t xcb_req = { 0 }; - unsigned int sequence; - int flags = XCB_REQUEST_RAW; - int i; - size_t len; - - /* skip empty iovecs. if no iovecs remain, we're done. */ - assert(veclen >= 0); - while(veclen > 0 && vec[0].iov_len == 0) - --veclen, ++vec; - if(!veclen) - return 0; - - len = request_length(vec); - - /* do we have enough data for a complete request? how many iovec - * elements does it span? */ - for(i = 0; i < veclen; ++i) - { - size_t oldlen = len; - len -= vec[i].iov_len; - /* if len is now 0 or has wrapped, we have enough data. */ - if((len - 1) > oldlen) - break; - } - if(i == veclen) - return 0; - - /* we have enough data to issue one complete request. the remaining - * code can't fail. */ - - /* len says how far we overshot our data needs. (it's "negative" if - * we actually overshot, or 0 if we're right on.) */ - vec[i].iov_len += len; - xcb_req.count = i + 1; - xcb_req.opcode = ((uint8_t *) vec[0].iov_base)[0]; - - /* if we don't own the event queue, we have to ask XCB to set our - * errors aside for us. */ - if(dpy->xcl->event_owner != XlibOwnsEventQueue) - flags |= XCB_REQUEST_CHECKED; - - /* XCB will always skip request 0; account for that in the Xlib count */ - if (xcb_get_request_sent(dpy->xcl->connection) == 0xffffffff) - dpy->request++; - /* send the accumulated request. */ - sequence = xcb_send_request(dpy->xcl->connection, flags, vec, &xcb_req); - if(!sequence) - _XIOError(dpy); - - /* update the iovecs to refer only to data not yet sent. */ - vec[i].iov_len = -len; - - /* iff we asked XCB to set aside errors, we must pick those up - * eventually. iff there are async handlers, we may have just - * issued requests that will generate replies. in either case, - * we need to remember to check later. */ - if(flags & XCB_REQUEST_CHECKED || dpy->async_handlers) - { - PendingRequest *req = malloc(sizeof(PendingRequest)); - assert(req); - req->next = 0; - req->sequence = sequence; - *dpy->xcl->pending_requests_tail = req; - dpy->xcl->pending_requests_tail = &req->next; - } - return 1; -} - -void _XPutXCBBuffer(Display *dpy) -{ - static char const pad[3]; - const int padsize = -dpy->xcl->request_extra_size & 3; - xcb_connection_t *c = dpy->xcl->connection; - _XExtension *ext; - struct iovec iov[6]; - - assert_sequence_less(dpy->last_request_read, dpy->request); - assert_sequence_less(xcb_get_request_sent(c), dpy->request); - - for(ext = dpy->flushes; ext; ext = ext->next_flush) - { - ext->before_flush(dpy, &ext->codes, dpy->buffer, dpy->bufptr - dpy->buffer); - if(dpy->xcl->request_extra) - { - ext->before_flush(dpy, &ext->codes, dpy->xcl->request_extra, dpy->xcl->request_extra_size); - if(padsize) - ext->before_flush(dpy, &ext->codes, pad, padsize); - } - } - - iov[2].iov_base = dpy->xcl->partial_request; - iov[2].iov_len = dpy->xcl->partial_request_offset; - iov[3].iov_base = dpy->buffer; - iov[3].iov_len = dpy->bufptr - dpy->buffer; - iov[4].iov_base = (caddr_t) dpy->xcl->request_extra; - iov[4].iov_len = dpy->xcl->request_extra_size; - iov[5].iov_base = (caddr_t) pad; - iov[5].iov_len = padsize; - - while(issue_complete_request(dpy, 4, iov + 2)) - /* empty */; - - /* first discard any completed partial_request. */ - if(iov[2].iov_len == 0 && dpy->xcl->partial_request) - { - free(dpy->xcl->partial_request); - dpy->xcl->partial_request = 0; - dpy->xcl->partial_request_offset = 0; - } - - /* is there anything to copy into partial_request? */ - if(iov[3].iov_len != 0 || iov[4].iov_len != 0 || iov[5].iov_len != 0) - { - int i; - if(!dpy->xcl->partial_request) - { - size_t len = request_length(iov + 3); - assert(!dpy->xcl->partial_request_offset); - dpy->xcl->partial_request = malloc(len); - assert(dpy->xcl->partial_request); - } - for(i = 3; i < sizeof(iov) / sizeof(*iov); ++i) - { - memcpy(dpy->xcl->partial_request + dpy->xcl->partial_request_offset, iov[i].iov_base, iov[i].iov_len); - dpy->xcl->partial_request_offset += iov[i].iov_len; - } - } - - dpy->xcl->request_extra = 0; - dpy->xcl->request_extra_size = 0; - dpy->bufptr = dpy->buffer; -} - -/* */ - -void _XGetXCBBufferIf(Display *dpy, enum _XBufferCondition locked) -{ - if((dpy->xcl->lock_count > 0) == locked) - _XGetXCBBuffer(dpy); -} - -void _XPutXCBBufferIf(Display *dpy, enum _XBufferCondition locked) -{ - if((dpy->xcl->lock_count > 0) == locked) - _XPutXCBBuffer(dpy); -} diff --git a/src/xkb/XKBGeom.c b/src/xkb/XKBGeom.c index 02b03bab..6eca6d5b 100644 --- a/src/xkb/XKBGeom.c +++ b/src/xkb/XKBGeom.c @@ -255,9 +255,15 @@ Status rtrn; char *name,*value; ok= True; for (i=0;(inProperties)&&ok;i++) { + name=NULL; + value=NULL; ok= _XkbGetReadBufferCountedString(buf,&name)&&ok; ok= _XkbGetReadBufferCountedString(buf,&value)&&ok; ok= ok&&(XkbAddGeomProperty(geom,name,value)!=NULL); + if (name) + _XkbFree(name); + if (value) + _XkbFree(value); } if (ok) rtrn= Success; else rtrn= BadLength; @@ -300,10 +306,15 @@ Status rtrn; register int i; char *spec; for (i=0;inColors;i++) { + spec = NULL; if (!_XkbGetReadBufferCountedString(buf,&spec)) - return BadLength; - if (XkbAddGeomColor(geom,spec,geom->num_colors)==NULL) - return BadAlloc; + rtrn = BadLength; + else if (XkbAddGeomColor(geom,spec,geom->num_colors)==NULL) + rtrn = BadAlloc; + if (spec) + _XkbFree(spec); + if (rtrn != Success) + return rtrn; } return Success; } @@ -632,21 +643,27 @@ XkbGetGeometry(Display *dpy,XkbDescPtr xkb) { xkbGetGeometryReq *req; xkbGetGeometryReply rep; +Status status; if ( (!xkb) || (dpy->flags & XlibDisplayNoXkb) || (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) return BadAccess; + LockDisplay(dpy); GetReq(kbGetGeometry, req); req->reqType = dpy->xkb_info->codes->major_opcode; req->xkbReqType = X_kbGetGeometry; req->deviceSpec = xkb->device_spec; req->name= None; if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) - return BadImplementation; - if (!rep.found) - return BadName; - return _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL); + status = BadImplementation; + else if (!rep.found) + status = BadName; + else + status = _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL); + UnlockDisplay(dpy); + SyncHandle(); + return status; } Status @@ -654,20 +671,26 @@ XkbGetNamedGeometry(Display *dpy,XkbDescPtr xkb,Atom name) { xkbGetGeometryReq *req; xkbGetGeometryReply rep; +Status status; if ( (name==None) || (dpy->flags & XlibDisplayNoXkb) || (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)) ) return BadAccess; + LockDisplay(dpy); GetReq(kbGetGeometry, req); req->reqType = dpy->xkb_info->codes->major_opcode; req->xkbReqType = X_kbGetGeometry; req->deviceSpec = xkb->device_spec; req->name= (CARD32)name; if ((!_XReply(dpy, (xReply *)&rep, 0, xFalse))||(!rep.found)) - return BadImplementation; - if (!rep.found) - return BadName; - return _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL); + status = BadImplementation; + else if (!rep.found) + status = BadName; + else + status = _XkbReadGetGeometryReply(dpy,&rep,xkb,NULL); + UnlockDisplay(dpy); + SyncHandle(); + return status; } diff --git a/src/xkb/XKBGetMap.c b/src/xkb/XKBGetMap.c index 777f7cc5..59e99621 100644 --- a/src/xkb/XKBGetMap.c +++ b/src/xkb/XKBGetMap.c @@ -823,8 +823,8 @@ XkbGetMapChanges(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes) req->firstVModMapKey = changes->first_vmodmap_key; req->nVModMapKeys = changes->num_vmodmap_keys; status= _XkbHandleGetMapReply(dpy, xkb); - SyncHandle(); UnlockDisplay(dpy); + SyncHandle(); return status; } UnlockDisplay(dpy); diff --git a/src/xkb/XKBSetGeom.c b/src/xkb/XKBSetGeom.c index e0706235..8e4d8b1b 100644 --- a/src/xkb/XKBSetGeom.c +++ b/src/xkb/XKBSetGeom.c @@ -446,6 +446,7 @@ Status ret; (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) return BadAccess; + LockDisplay(dpy); GetReq(kbSetGeometry, req); req->reqType = dpy->xkb_info->codes->major_opcode; req->xkbReqType = X_kbSetGeometry; diff --git a/src/xkb/XKBleds.c b/src/xkb/XKBleds.c index 89ab2e9e..865342c4 100644 --- a/src/xkb/XKBleds.c +++ b/src/xkb/XKBleds.c @@ -228,6 +228,8 @@ XkbGetNamedDeviceIndicator( Display * dpy, SyncHandle(); return False; } + UnlockDisplay(dpy); + SyncHandle(); if ((!rep.found)||(!rep.supported)) return False; if (pNdxRtrn!=NULL) 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 diff --git a/x11.pc.in b/x11.pc.in index ee3c097a..d10c6f10 100644 --- a/x11.pc.in +++ b/x11.pc.in @@ -9,7 +9,7 @@ Name: X11 Description: X Library Version: @PACKAGE_VERSION@ Requires: xproto @XKBPROTO_REQUIRES@ -Requires.private: xau xdmcp +Requires.private: xau xdmcp @X11_EXTRA_DEPS@ Cflags: -I${includedir} @XTHREAD_CFLAGS@ Libs: -L${libdir} -lX11 Libs.private: @XTHREADLIB@