From 1838412121d0bac8ce443d362e75439d58a93a4d Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 3 Jul 2007 14:09:41 -0700 Subject: 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. --- composite.h | 10 +++------- compositeproto.h | 48 ------------------------------------------------ compositeproto.txt | 46 +++++++++++++--------------------------------- 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 -- cgit v1.2.3