summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2004-07-08 07:20:55 +0000
committerKeith Packard <keithp@keithp.com>2004-07-08 07:20:55 +0000
commit734331f433e1d853aba942e17b3ed3efb0d972ab (patch)
treec5247908a6c35205e3aed85fe3468047ba2a6f25
parent19bb2c38370f5ef9296d451970f93e570b5a8546 (diff)
downloadxorg-proto-compositeproto-734331f433e1d853aba942e17b3ed3efb0d972ab.tar.gz
Add NameWindowPixmap request. Bump protocol to 0.2
-rw-r--r--ChangeLog10
-rw-r--r--composite.h7
-rw-r--r--compositeproto.h14
-rw-r--r--protocol32
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 <set EMAIL_ADDRESS environment variable>
+2004-07-08 Keith Packard <keithp@keithp.com>
+
+ * composite.h:
+ * compositeproto.h:
+ * protocol:
+ Add NameWindowPixmap request.
+ Bump protocol to 0.2
+
+2004-06-27 Eric Anholt <anholt@freedesktop.org>
* 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.