[xorg-x11-proto-devel] pointer barrier protocol
Adam Jackson
ajax at fedoraproject.org
Mon Feb 28 15:45:27 UTC 2011
commit 474ef4505527849cfd3b0621d3602b95ac53a402
Author: Adam Jackson <ajax at redhat.com>
Date: Mon Feb 28 10:45:17 2011 -0500
pointer barrier protocol
0001-fixesproto-v5-Pointer-barriers.patch | 223 +++++++++++++++++++++++++++++
xorg-x11-proto-devel.spec | 14 ++-
2 files changed, 236 insertions(+), 1 deletions(-)
---
diff --git a/0001-fixesproto-v5-Pointer-barriers.patch b/0001-fixesproto-v5-Pointer-barriers.patch
new file mode 100644
index 0000000..75cbcdf
--- /dev/null
+++ b/0001-fixesproto-v5-Pointer-barriers.patch
@@ -0,0 +1,223 @@
+From 9760b4bdd1f9fdd6a33b9f876c4a835ed969aa84 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Mon, 15 Nov 2010 17:09:31 -0500
+Subject: [PATCH] fixesproto v5: Pointer barriers
+
+v3: Review fixes:
+- INT16 not CARD16 for coordinates
+- BadDevice not BadMatch
+
+[fedora: Removed conflicting hunks on copyright lines]
+Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
+Signed-off-by: Adam Jackson <ajax at redhat.com>
+---
+
+diff --git a/fixesproto.txt b/fixesproto.txt
+index 5ef8153..5903ac9 100644
+--- a/fixesproto.txt
++++ b/fixesproto.txt
+@@ -1,7 +1,7 @@
+ The XFIXES Extension
+- Version 4.0
+- Document Revision 2
+- 2006-12-14
++ Version 5.0
++ Document Revision 1
++ 2010-11-15
+ Keith Packard
+ keithp at keithp.com
+
+@@ -19,7 +19,7 @@ developers, in particular,
+
+ + Owen Taylor for describing the issues raised with the XEMBED
+ mechanisms and SaveSet processing and his initial extension
+- to handle this issue.
++ to handle this issue, and for pointer barriers
+
+ + Bill Haneman for the design for cursor image tracking.
+
+@@ -566,6 +566,90 @@ ShowCursor
+ Servers supporting the X Input Extension Version 2.0 or higher show
+ all visible cursors in response to a ShowCursor request.
+
++************* XFIXES VERSION 5 OR BETTER ***********
++
++12. Pointer Barriers
++
++Compositing managers and desktop environments may have UI elements in
++particular screen locations such that for a single-headed display they
++correspond to easy targets according to Fitt's Law, for example, the top
++left corner. For a multi-headed environment these corners should still be
++semi-impermeable. Pointer barriers allow the application to define
++additional constraint on cursor motion so that these areas behave as
++expected even in the face of multiple displays.
++
++Absolute positioning devices like touchscreens do not obey pointer barriers.
++There's no advantage to target acquisition to do so, since on a touchscreen
++all points are in some sense equally large, whereas for a relative
++positioning device the edges and corners are infinitely large.
++
++WarpPointer and similar requests do not obey pointer barriers, for
++essentially the same reason.
++
++12.1 Types
++
++ BARRIER: XID
++
++ BarrierDirections
++
++ BarrierPositiveX: 1 << 0
++ BarrierPositiveY: 1 << 1
++ BarrierNegativeX: 1 << 2
++ BarrierNegativeY: 1 << 3
++
++12.2 Errors
++
++ Barrier
++
++12.3 Requests
++
++CreatePointerBarrier
++
++ barrier: BARRIER
++ drawable: DRAWABLE
++ x1, y2, x2, y2: INT16
++ directions: CARD32
++ devices: LISTofDEVICEID
++
++ Creates a pointer barrier along the line specified by the given
++ coordinates on the screen associated with the given drawable. The
++ barrier has no spatial extent; it is simply a line along the left
++ or top edge of the specified pixels. Barrier coordinates are in
++ screen space.
++
++ The coordinates must be axis aligned, either x1 == x2, or
++ y1 == y2, but not both. The varying coordinates may be specified
++ in any order. For x1 == x2, either y1 > y2 or y1 < y2 is valid.
++ If the coordinates are not valid BadValue is generated.
++
++ Motion is allowed through the barrier in the directions specified:
++ setting the BarrierPositiveX bit allows travel through the barrier
++ in the positive X direction, etc. Nonsensical values (forbidding Y
++ axis travel through a vertical barrier, for example) and excess set
++ bits are ignored.
++
++ If the server supports the X Input Extension version 2 or higher,
++ the devices element names a set of master device to apply the
++ barrier to. If XIAllDevices or XIAllMasterDevices are given, the
++ barrier applies to all master devices. If a slave device is named,
++ BadDevice is generated; this does not apply to slave devices named
++ implicitly by XIAllDevices. Naming a device multiple times is
++ legal, and is treated as though it were named only once. If a
++ device is removed, the barrier continues to apply to the remaining
++ devices, but will not apply to any future device with the same ID
++ as the removed device. Nothing special happens when all matching
++ devices are removed; barriers must be explicitly destroyed.
++
++ Errors: IDChoice, Window, Value, Device
++
++DestroyPointerBarrier
++
++ barrier: BARRIER
++
++ Destroys the named barrier.
++
++ Errors: Barrier
++
+ 99. Future compatibility
+
+ This extension is not expected to remain fixed. Future changes will
+diff --git a/xfixesproto.h b/xfixesproto.h
+index ed872d1..fcf409a 100644
+--- a/xfixesproto.h
++++ b/xfixesproto.h
+@@ -500,6 +501,38 @@ typedef struct {
+
+ #define sz_xXFixesShowCursorReq sizeof(xXFixesShowCursorReq)
+
++/*************** Version 5.0 ******************/
++
++#define Barrier CARD32
++
++typedef struct {
++ CARD8 reqType;
++ CARD8 xfixesReqType;
++ CARD16 length B16;
++ Barrier barrier B32;
++ Window window B32;
++ INT16 x1 B16;
++ INT16 y1 B16;
++ INT16 x2 B16;
++ INT16 y2 B16;
++ CARD32 directions;
++ CARD16 pad B16;
++ CARD16 num_devices B16;
++ /* array of CARD16 devices */
++} xXFixesCreatePointerBarrierReq;
++
++#define sz_xXFixesCreatePointerBarrierReq 28
++
++typedef struct {
++ CARD8 reqType;
++ CARD8 xfixesReqType;
++ CARD16 length B16;
++ Barrier barrier B32;
++} xXFixesDestroyPointerBarrierReq;
++
++#define sz_xXFixesDestroyPointerBarrierReq 8
++
++#undef Barrier
+ #undef Region
+ #undef Picture
+ #undef Window
+diff --git a/xfixeswire.h b/xfixeswire.h
+index 7b43f09..432349a 100644
+--- a/xfixeswire.h
++++ b/xfixeswire.h
+@@ -47,7 +48,7 @@
+ #define _XFIXESWIRE_H_
+
+ #define XFIXES_NAME "XFIXES"
+-#define XFIXES_MAJOR 4
++#define XFIXES_MAJOR 5
+ #define XFIXES_MINOR 0
+
+ /*************** Version 1 ******************/
+@@ -85,8 +86,11 @@
+ /*************** Version 4 ******************/
+ #define X_XFixesHideCursor 29
+ #define X_XFixesShowCursor 30
++/*************** Version 5 ******************/
++#define X_XFixesCreatePointerBarrier 31
++#define X_XFixesDestroyPointerBarrier 32
+
+-#define XFixesNumberRequests (X_XFixesShowCursor+1)
++#define XFixesNumberRequests (X_XFixesDestroyPointerBarrier+1)
+
+ /* Selection events share one event number */
+ #define XFixesSelectionNotify 0
+@@ -111,7 +115,8 @@
+
+ /* errors */
+ #define BadRegion 0
+-#define XFixesNumberErrors (BadRegion+1)
++#define BadBarrier 1
++#define XFixesNumberErrors (BadBarrier+1)
+
+ #define SaveSetNearest 0
+ #define SaveSetRoot 1
+@@ -124,4 +129,11 @@
+ #define WindowRegionBounding 0
+ #define WindowRegionClip 1
+
++/*************** Version 5 ******************/
++
++#define BarrierPositiveX (1L << 0)
++#define BarrierPositiveY (1L << 1)
++#define BarrierNegativeX (1L << 2)
++#define BarrierNegativeY (1L << 3)
++
+ #endif /* _XFIXESWIRE_H_ */
+--
+1.7.3.5
+
diff --git a/xorg-x11-proto-devel.spec b/xorg-x11-proto-devel.spec
index 685c1a4..88a6345 100644
--- a/xorg-x11-proto-devel.spec
+++ b/xorg-x11-proto-devel.spec
@@ -7,7 +7,7 @@
Summary: X.Org X11 Protocol headers
Name: xorg-x11-proto-devel
Version: 7.6
-Release: 4%{?dist}
+Release: 5%{?dist}
License: MIT
Group: Development/System
URL: http://www.x.org
@@ -46,6 +46,8 @@ Source40: make-git-snapshot.sh
Patch1: 0001-Add-XF86XK_TouchpadOn-Off.patch
+Patch10: 0001-fixesproto-v5-Pointer-barriers.patch
+
BuildRequires: pkgconfig
BuildRequires: xorg-x11-util-macros >= 1.0.2-1
@@ -67,6 +69,10 @@ pushd xproto-*
%patch1 -p1 -b .xf86touchpad
popd
+pushd fixesproto-*
+%patch10 -p1 -b .barriers
+popd
+
%build
# Proceed through each proto package directory, building them all
@@ -97,6 +103,9 @@ mv $RPM_BUILD_ROOT%{_docdir}/*/*.{txt,xml} .
#done
mv $RPM_BUILD_ROOT%{_docdir}/xproxymanagementprotocol/PM_spec .
+# keep things building even if you have the html doc tools for xmlto installed
+rm -f $RPM_BUILD_ROOT%{_docdir}/*/*.html
+
%clean
rm -rf $RPM_BUILD_ROOT
@@ -272,6 +281,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/pkgconfig/xproxymngproto.pc
%changelog
+* Mon Feb 28 2011 Adam Jackson <ajax at redhat.com> 7.6-5
+- 0001-fixesproto-v5-Pointer-barriers.patch: from git.
+
* Mon Feb 28 2011 Peter Hutterer <peter.hutterer at redhat.com> 7.6-4
- xextproto 7.2.0
More information about the scm-commits
mailing list