mirror of
https://gitlab.freedesktop.org/xorg/proto/xorgproto.git
synced 2025-12-20 08:10:11 +01:00
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.
This commit is contained in:
parent
bca9592612
commit
1838412121
3 changed files with 16 additions and 88 deletions
10
composite.h
10
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_ */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue