From 734331f433e1d853aba942e17b3ed3efb0d972ab Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 8 Jul 2004 07:20:55 +0000 Subject: Add NameWindowPixmap request. Bump protocol to 0.2 --- ChangeLog | 10 +++++++++- composite.h | 7 ++++--- compositeproto.h | 14 +++++++++++++- protocol | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 56 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index a8b2c12..1dd908e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,12 @@ -2004-06-27 root +2004-07-08 Keith Packard + + * composite.h: + * compositeproto.h: + * protocol: + Add NameWindowPixmap request. + Bump protocol to 0.2 + +2004-06-27 Eric Anholt * protocol: Fix some apostrophe issues. diff --git a/composite.h b/composite.h index 12546e3..4ba6b45 100644 --- a/composite.h +++ b/composite.h @@ -1,5 +1,5 @@ /* - * $Id: composite.h,v 1.3 2003-11-07 04:21:01 keithp Exp $ + * $Id: composite.h,v 1.4 2004-07-08 07:20:55 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -29,7 +29,7 @@ #define COMPOSITE_NAME "Composite" #define COMPOSITE_MAJOR 0 -#define COMPOSITE_MINOR 1 +#define COMPOSITE_MINOR 2 #define CompositeRedirectAutomatic 0 #define CompositeRedirectManual 1 @@ -40,7 +40,8 @@ #define X_CompositeUnredirectWindow 3 #define X_CompositeUnredirectSubwindows 4 #define X_CompositeCreateRegionFromBorderClip 5 +#define X_CompositeNameWindowPixmap 6 -#define CompositeNumberRequests (X_CompositeCreateRegionFromBorderClip + 1) +#define CompositeNumberRequests (X_CompositeNameWindowPixmap + 1) #endif /* _COMPOSITE_H_ */ diff --git a/compositeproto.h b/compositeproto.h index 4f349d4..bd8999d 100644 --- a/compositeproto.h +++ b/compositeproto.h @@ -1,5 +1,5 @@ /* - * $Id: compositeproto.h,v 1.3 2003-11-07 04:21:01 keithp Exp $ + * $Id: compositeproto.h,v 1.4 2004-07-08 07:20:55 keithp Exp $ * * Copyright © 2003 Keith Packard * @@ -117,6 +117,18 @@ typedef struct { #define sz_xCompositeCreateRegionFromBorderClipReq 12 +/* Version 0.2 additions */ + +typedef struct { + CARD8 reqType; + CARD8 compositeReqType; + CARD16 length; + Window window B32; + Pixmap pixmap B32; +} xCompositeNameWindowPixmapReq; + +#define sz_xCompositeNameWindowPixmapReq 12 + #undef Window #undef Region diff --git a/protocol b/protocol index 94b073e..1479676 100644 --- a/protocol +++ b/protocol @@ -1,6 +1,6 @@ Composite Extension - Version 0.1 - 2003-11-04 + Version 0.2 + 2004-7-8 Keith Packard keithp@keithp.com @@ -56,6 +56,17 @@ may be done with the Damage extension. The off-screen storage includes the window contents, its borders and the contents of all descendants. +Version 0.2 of the protocol introduces a mechanism for associating an XID +with the off-screen pixmap used to store these contents. This can be used +to hold onto window contents after the window is unmapped (and hence animate +it's disappearance), and also to access the border of the window, which is +not reachable through the Window ID itself. A new pixmap is created each +time the window is mapped or resized; as these events are nicely signalled +with existing events, no additional notification is needed. The old pixmap +will remain allocated as long as the Pixmap ID is left valid, it is +important that the client use the FreePixmap request when it is done with +the contents and to create a new name for the newly allocated pixmap. + In automatic update mode, the X server is itself responsible for presenting the child window contents within the parent. It seems reasonable, then, for rendering to the parent window to be clipped so as not to interfere with any @@ -181,3 +192,20 @@ operations other than QueryVersion. is copied at the moment the request is executed; future changes to the window hierarchy will not be reflected in this region. +10. Associating a Pixmap ID with the off-screen storage (0.2 and later) + + NameWindowPixmap + + window: Window + pixmap: Pixmap + + errors: Window, Match, IDChoice + + This request makes 'pixmap' a reference to the off-screen storage + for 'window'. This pixmap will remain allocated until freed, even + if 'window' is unmapped, reconfigured or destroyed. However, + 'window' will get a new pixmap allocated each time it is + mapped or resized, so this request will need to be reinvoked for + the client to continue to refer to the storage holding the current + window contents. Generates a 'Match' error if 'window' is not + redirected. -- cgit v1.2.3