pointer barrier protocol
This commit is contained in:
parent
ecfb0316ac
commit
474ef45055
223
0001-fixesproto-v5-Pointer-barriers.patch
Normal file
223
0001-fixesproto-v5-Pointer-barriers.patch
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
From 9760b4bdd1f9fdd6a33b9f876c4a835ed969aa84 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Jackson <ajax@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@who-t.net>
|
||||||
|
Signed-off-by: Adam Jackson <ajax@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@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
|
||||||
|
|
@ -7,7 +7,7 @@
|
|||||||
Summary: X.Org X11 Protocol headers
|
Summary: X.Org X11 Protocol headers
|
||||||
Name: xorg-x11-proto-devel
|
Name: xorg-x11-proto-devel
|
||||||
Version: 7.6
|
Version: 7.6
|
||||||
Release: 4%{?dist}
|
Release: 5%{?dist}
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: Development/System
|
Group: Development/System
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
@ -46,6 +46,8 @@ Source40: make-git-snapshot.sh
|
|||||||
|
|
||||||
Patch1: 0001-Add-XF86XK_TouchpadOn-Off.patch
|
Patch1: 0001-Add-XF86XK_TouchpadOn-Off.patch
|
||||||
|
|
||||||
|
Patch10: 0001-fixesproto-v5-Pointer-barriers.patch
|
||||||
|
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: xorg-x11-util-macros >= 1.0.2-1
|
BuildRequires: xorg-x11-util-macros >= 1.0.2-1
|
||||||
|
|
||||||
@ -67,6 +69,10 @@ pushd xproto-*
|
|||||||
%patch1 -p1 -b .xf86touchpad
|
%patch1 -p1 -b .xf86touchpad
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
pushd fixesproto-*
|
||||||
|
%patch10 -p1 -b .barriers
|
||||||
|
popd
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
# Proceed through each proto package directory, building them all
|
# Proceed through each proto package directory, building them all
|
||||||
@ -97,6 +103,9 @@ mv $RPM_BUILD_ROOT%{_docdir}/*/*.{txt,xml} .
|
|||||||
#done
|
#done
|
||||||
mv $RPM_BUILD_ROOT%{_docdir}/xproxymanagementprotocol/PM_spec .
|
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
|
%clean
|
||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
@ -272,6 +281,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_datadir}/pkgconfig/xproxymngproto.pc
|
%{_datadir}/pkgconfig/xproxymngproto.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Feb 28 2011 Adam Jackson <ajax@redhat.com> 7.6-5
|
||||||
|
- 0001-fixesproto-v5-Pointer-barriers.patch: from git.
|
||||||
|
|
||||||
* Mon Feb 28 2011 Peter Hutterer <peter.hutterer@redhat.com> 7.6-4
|
* Mon Feb 28 2011 Peter Hutterer <peter.hutterer@redhat.com> 7.6-4
|
||||||
- xextproto 7.2.0
|
- xextproto 7.2.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user