--- configure.ac | 2 +- include/X11/extensions/Xfixes.h | 14 ++++++++ src/Layout.c | 66 +++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 1 + 4 files changed, 82 insertions(+), 1 deletions(-) create mode 100644 src/Layout.c
diff --git a/configure.ac b/configure.ac index 754ef2c..3390b1e 100644 --- a/configure.ac +++ b/configure.ac @@ -32,7 +32,7 @@ dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n, dnl that 'revision' number appears in Xfixes.h and has to be manually dnl synchronized. dnl -AC_INIT(libXfixes, 4.0.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libXfixes) +AC_INIT(libXfixes, 5.0.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libXfixes) AM_INIT_AUTOMAKE([dist-bzip2]) AM_MAINTAINER_MODE diff --git a/include/X11/extensions/Xfixes.h b/include/X11/extensions/Xfixes.h index 873aab3..8e12210 100644 --- a/include/X11/extensions/Xfixes.h +++ b/include/X11/extensions/Xfixes.h @@ -2,6 +2,7 @@ * $XFree86: xc/lib/Xfixes/Xfixes.h,v 1.1 2002/11/30 06:21:45 keithp Exp $ * * Copyright © 2006 Sun Microsystems + * Copyright © 2009 NVIDIA Corporation * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -111,6 +112,12 @@ typedef struct { #endif +#if XFIXES_MAJOR >= 5 + +typedef xXFixesScreenLayoutRec XFixesScreenLayout; + +#endif /* XFIXES_MAJOR >= 5 */ + _XFUNCPROTOBEGIN Bool XFixesQueryExtension (Display *dpy, @@ -249,6 +256,13 @@ XFixesShowCursor (Display *dpy, Window win); #endif /* XFIXES_MAJOR >= 4 */ +#if XFIXES_MAJOR >= 5 + +XFixesScreenLayout * +XFixesGetScreenLayout (Display *dpy); + +#endif /* XFIXES_MAJOR >= 5 */ + _XFUNCPROTOEND #endif /* _XFIXES_H_ */ diff --git a/src/Layout.c b/src/Layout.c new file mode 100644 index 0000000..98cb40a --- /dev/null +++ b/src/Layout.c @@ -0,0 +1,66 @@ +/* + * Copyright © 2009 NVIDIA Corporation + * + * 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, and/or sell copies of the + * Software, and to permit persons to whom the Software is furnished to do so, + * provided that the above copyright notice(s) and this permission notice appear + * in all copies of the Software and that both the above copyright notice(s) and + * this permission notice appear in supporting documentation. + * + * 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 OF THIRD PARTY RIGHTS. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + * LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR + * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Except as contained in this notice, the name of a copyright holder shall not + * be used in advertising or otherwise to promote the sale, use or other + * dealings in this Software without prior written authorization of the + * copyright holder. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif +#include "Xfixesint.h" + +XFixesScreenLayout * +XFixesGetScreenLayout (Display *dpy) +{ + XFixesExtDisplayInfo *info = XFixesFindDisplay (dpy); + xXFixesGetScreenLayoutReq *req; + xXFixesGetScreenLayoutReply rep; + xXFixesScreenLayoutRec *layout; + const int nscreens = ScreenCount(dpy); + const int extra = nscreens * sizeof(xXFixesScreenLayoutRec); + + XFixesCheckExtension (dpy, info, NULL); + LockDisplay (dpy); + + GetReq (XFixesGetScreenLayout, req); + req->reqType = info->codes->major_opcode; + req->xfixesReqType = X_XFixesGetScreenLayout; + if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) + { + UnlockDisplay(dpy); + SyncHandle(); + return NULL; + } + + layout = Xmalloc(extra); + if (layout) { + _XReadPad(dpy, (char *)layout, extra); + } else { + _XEatData(dpy, extra); + } + + UnlockDisplay(dpy); + SyncHandle(); + return(layout); +} diff --git a/src/Makefile.am b/src/Makefile.am index 3ba9522..00f17b6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,6 +2,7 @@ lib_LTLIBRARIES = libXfixes.la libXfixes_la_SOURCES = \ Cursor.c \ + Layout.c \ Region.c \ SaveSet.c \ Selection.c \ -- 1.6.0.4 _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
