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 +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 +Signed-off-by: Adam Jackson +--- + +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@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 7.6-5 +- 0001-fixesproto-v5-Pointer-barriers.patch: from git. + * Mon Feb 28 2011 Peter Hutterer 7.6-4 - xextproto 7.2.0