summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@neko.keithp.com>2007-07-03 14:09:41 -0700
committerKeith Packard <keithp@neko.keithp.com>2007-07-03 14:09:41 -0700
commit1838412121d0bac8ce443d362e75439d58a93a4d (patch)
tree3d77e2f558bba44e3e394f3cca81aa36a238d2e0
parentbca9592612d60142e3c624b90649475b561b8eda (diff)
Define new manual-redirect clipping semantics and bump version to 0.4.
Manual-redirect windows no longer clip their parents, nor do they affect expose event computation. This makes it possible to create application-level composited windows which can be damaged by other window manipulations. This patch also removes the coordinate transformation stuff which was never released.
-rw-r--r--composite.h10
-rw-r--r--compositeproto.h48
-rw-r--r--compositeproto.txt46
3 files changed, 16 insertions, 88 deletions
diff --git a/composite.h b/composite.h
index 009007b..30b190f 100644
--- a/composite.h
+++ b/composite.h
@@ -49,7 +49,7 @@
#define COMPOSITE_NAME "Composite"
#define COMPOSITE_MAJOR 0
-#define COMPOSITE_MINOR 3
+#define COMPOSITE_MINOR 4
#define CompositeRedirectAutomatic 0
#define CompositeRedirectManual 1
@@ -63,13 +63,9 @@
#define X_CompositeNameWindowPixmap 6
#define X_CompositeGetOverlayWindow 7
#define X_CompositeReleaseOverlayWindow 8
-#define X_CompositeRedirectCoordinate 9
-#define X_CompositeTransformCoordinate 10
-#define CompositeNumberRequests (X_CompositeTransformCoordinate + 1)
+#define CompositeNumberRequests (X_CompositeReleaseOverlayWindow + 1)
-#define CompositeTransformCoordinateNotify 0
-
-#define CompositeNumberEvents 1
+#define CompositeNumberEvents 0
#endif /* _COMPOSITE_H_ */
diff --git a/compositeproto.h b/compositeproto.h
index b7c605b..c57628c 100644
--- a/compositeproto.h
+++ b/compositeproto.h
@@ -185,54 +185,6 @@ typedef struct {
#define sz_xCompositeReleaseOverlayWindowReq sizeof(xCompositeReleaseOverlayWindowReq)
-/* Version 0.4 additions */
-
-typedef struct {
- CARD8 reqType;
- CARD8 compositeReqType;
- CARD16 length;
- Window window B32;
- BOOL redirect;
- BYTE unused1;
- CARD16 unused2 B16;
-} xCompositeRedirectCoordinateReq;
-
-#define sz_xCompositeRedirectCoordinateReq 12
-
-typedef struct {
- CARD8 type;
- CARD8 subtype; /* XXX use this? */
- CARD16 sequenceNumber B16;
- Time time B32;
- Window window B32;
- Window child B32;
- CARD32 serialNumber B32;
- CARD32 count B32;
- CARD16 x B16;
- CARD16 y B16;
- CARD32 pad1 B32;
-} xCompositeTransformCoordinateNotifyEvent;
-
-typedef struct {
- Window window B32;
- CARD16 x B16;
- CARD16 y B16;
-} xCompositeCoordinate;
-
-#define sz_xCompositeCoordinate 8
-
-typedef struct {
- CARD8 reqType;
- CARD8 compositeReqType;
- CARD16 length;
- Window window B32;
- CARD32 serialNumber B32;
- CARD16 x B16;
- CARD16 y B16;
-} xCompositeTransformCoordinateReq;
-
-#define sz_xCompositeTransformCoordinateReq 16
-
#undef Window
#undef Region
diff --git a/compositeproto.txt b/compositeproto.txt
index 8740920..4b86621 100644
--- a/compositeproto.txt
+++ b/compositeproto.txt
@@ -1,6 +1,6 @@
Composite Extension
Version 0.4
- 2007-4-17
+ 2007-7-3
Keith Packard
keithp@keithp.com
Deron Johnson
@@ -34,6 +34,9 @@ both early prototypes and the final design include:
+ Deron Johnson for the Looking Glass implementation and
a prototype of the coordinate transformation mechanism.
+ + Ryan Lortie for helping figure out reasonable parent clipping
+ semantics in the presense of manual redirected children.
+
3. Architecture
The composite extension provides three related mechanisms:
@@ -129,11 +132,16 @@ redefine its input region, but the specific arbitration rules followed
by these clients is not defined by this specification; these policies
should be defined by the clients themselves.
-3.3 Coordinate transform redirection
+3.3 Clipping semantics redefined
-Version 0.4 of the protocol adds the coordinate transformation redirection
-portions of the protocol which externalize the relationship between
-parent and child positions with respect to pointer coordinates.
+Version 0.4 of the protocol changes the semantics of clipping in the
+presense of manual redirect children. In version 0.3, a parent was always
+clipped to child windows, independent of the kind of redirection going on.
+With version 0.4, the parent is no longer clipped to child windows which are
+manually redirected. This means the parent can draw in the child region without using
+IncludeInferiors mode, and (perhaps more importantly), it will receive
+expose events in those regions caused by other actions. This new behaviour
+is not selectable.
4. Errors
@@ -147,34 +155,6 @@ The composite extension does not define any new errors.
child: Window
x, y: CARD16
-6. Events
-
-Version 0.4 of the Composite protocol defines one new event
-
- TransformCoordinateNotify
-
- subtype: COORDINATEEVENT
- window: Window
- child: Window
- time: Timestamp
- serialNumber: CARD32
- count: CARD32
- x, y: INT16
-
- This event is delivered to the client requesting for coordinate
- redirection for 'window'. 'x' and 'y' are a location in 'child' if
- not None, else in 'window'. 'time' is the time of any related
- pointer event. 'serialNumber' serves to sequence transformations.
- 'count' indicates the number of events still to be delivered for
- 'window' to satisfy a particular operation within the server
-
- The client must respond to this event with a suitable
- TransformCoordinate request that includes matching 'window', 'child'
- and serialNumber fields.
-
- 'serialNumber' may be repeated in multiple events, indicating that
- the server needs to redo the same transformation for some reason.
-
7. Extension Initialization
The client must negotiate the version of the extension before executing