[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