---
 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

Reply via email to