[PATCH] Pack swap complete bits into an XEvent

Jesse Barnes jbarnes at virtuousgeek.org
Thu Apr 28 13:27:19 PDT 2011


The defintion of the swap complete event was wrong; XEvents are only 32
bytes long, and with padding the swap event was longer.  So use some
creative packing to get all the bits we want transmitted.  Requires a
proto version bump.
---
 configure.ac |    2 +-
 glxproto.h   |   13 +++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index d88e6df..a3047e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ([2.60])
-AC_INIT([GLProto], [1.4.12], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AC_INIT([GLProto], [1.4.13], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
 
diff --git a/glxproto.h b/glxproto.h
index 0ff44e3..4a583c1 100644
--- a/glxproto.h
+++ b/glxproto.h
@@ -1370,18 +1370,23 @@ typedef struct {
     CARD32 unused2 B32;
 } xGLXPbufferClobberEvent;
 
+/* Note, this struct is too large for an Xevent, I fail -- jbarnes
+ * So sbc_lo won't ever be sent.  We can use a generic event though without
+ * size restrictions, thus xGLXBufferSwapComplete2.
+ */
 typedef struct {
     BYTE type;
-    BYTE pad;
+    BYTE sbc_lo0;
     CARD16 sequenceNumber B16;
-    CARD16 event_type B16;
-    CARD32 drawable;
+    CARD8 event_type;
+    CARD8 sbc_lo8;
+    CARD16 sbc_lo16 B16;
+    CARD32 drawable B32;
     CARD32 ust_hi B32;
     CARD32 ust_lo B32;
     CARD32 msc_hi B32;
     CARD32 msc_lo B32;
     CARD32 sbc_hi B32;
-    CARD32 sbc_lo B32;
 } xGLXBufferSwapComplete;
 
 /************************************************************************/
-- 
1.7.1



More information about the dri-devel mailing list