emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/xelb c37b769 1/2: Add support for <required_start_align


From: Chris Feng
Subject: [elpa] externals/xelb c37b769 1/2: Add support for <required_start_align> and drop implicit padding
Date: Mon, 18 Jun 2018 10:35:42 -0400 (EDT)

branch: externals/xelb
commit c37b769c52156f34e729a7517cdaa21958c45073
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Add support for <required_start_align> and drop implicit padding
    
    * el_client.el (xelb-parse-required_start_align): New function for
    parsing <required_start_align>.
    (xelb-parse-structure-content): Use it.
    (xelb-parse-list): Drop implicit padding after <list>.
    
    * xcb-types.el (xcb:-marshal-field, xcb:unmarshal,
    xcb:-unmarshal-field): Make adaptions for <required_start_align>.
---
 el_client.el       | 23 +++++++++-------
 xcb-dri2.el        |  2 --
 xcb-dri3.el        | 20 +++++++-------
 xcb-glx.el         | 30 ++++++++++-----------
 xcb-present.el     | 12 ++++++---
 xcb-randr.el       | 23 +---------------
 xcb-record.el      |  2 --
 xcb-render.el      |  8 ------
 xcb-types.el       | 50 +++++++++++++++++++++++-----------
 xcb-xf86dri.el     |  1 -
 xcb-xf86vidmode.el |  8 ------
 xcb-xfixes.el      |  1 -
 xcb-xinput.el      | 78 ++++++++++++++++++++++++++----------------------------
 xcb-xkb.el         | 30 ++++++---------------
 xcb-xprint.el      |  4 ---
 xcb-xproto.el      |  4 ---
 xcb-xv.el          |  3 ---
 17 files changed, 128 insertions(+), 171 deletions(-)

diff --git a/el_client.el b/el_client.el
index dadcc39..9f1dc0c 100644
--- a/el_client.el
+++ b/el_client.el
@@ -513,12 +513,13 @@ The `combine-adjacent' attribute is simply ignored."
   "Parse a structure content node NODE."
   (pcase (xelb-node-name node)
     (`pad (xelb-parse-pad node))
+    (`required_start_align (xelb-parse-required_start_align node))
     (`field (xelb-parse-field node))
     (`fd (xelb-parse-fd node))
     (`list (xelb-parse-list node))
     (`exprfield (xelb-parse-exprfield node))
     (`switch (xelb-parse-switch node))
-    ((or `comment `doc `required_start_align)) ;simply ignored
+    ((or `comment `doc))                ;simply ignored
     (x (error "Unsupported structure content: <%s>" x))))
 
 ;; The car of the result shall be renamed to prevent duplication of slot names
@@ -534,6 +535,17 @@ The `combine-adjacent' attribute is simply ignored."
              :initform ,(string-to-number align) :type xcb:-pad-align))
         (error "Invalid <pad> field")))))
 
+(defun xelb-parse-required_start_align (node)
+  "Parse <required_start_align>."
+  (let ((align (xelb-node-attr node 'align))
+        (offset (xelb-node-attr node 'offset)))
+    `((,(xelb-generate-pad-name)
+       :initform ,(if offset
+                      (vector (string-to-number align)
+                              (string-to-number offset))
+                    (string-to-number align))
+       :type xcb:-pad-align))))
+
 (defun xelb-parse-field (node)
   "Parse <field>."
   (let* ((name (intern (xelb-node-attr-escape node 'name)))
@@ -554,13 +566,7 @@ The `combine-adjacent' attribute is simply ignored."
     `((,name :initarg ,(intern (concat ":" (symbol-name name)))
              :type xcb:-ignore)
       (,name-alt :initform '(name ,name type ,type size ,size)
-                 :type xcb:-list)
-      ;; Auto padding after variable-length list
-      ;; FIXME: according to the definition of `XCB_TYPE_PAD' in xcb.h, it does
-      ;;        not always padding to 4 bytes.
-      ,@(when (and (xelb-node-attr node 'xelb-auto-padding)
-                   (not (integerp size)))
-          `((,(xelb-generate-pad-name) :initform 4 :type xcb:-pad-align))))))
+                 :type xcb:-list))))
 
 ;; The car of result is the field declaration, and the cadr is the expression
 ;; to be evaluated.
@@ -606,7 +612,6 @@ The `combine-adjacent' attribute is simply ignored."
                       (when (or (eq case-name 'bitcase) (eq case-name 'case))
                         (dolist (j (xelb-node-subnodes i t))
                           (pcase (xelb-node-name j)
-                            (`required_start_align)
                             (`enumref
                              (setq condition
                                    (nconc condition
diff --git a/xcb-dri2.el b/xcb-dri2.el
index 21f3059..62c7619 100644
--- a/xcb-dri2.el
+++ b/xcb-dri2.el
@@ -96,7 +96,6 @@
                 '(name driver-name type xcb:char size
                        (xcb:-fieldref 'driver-name-length))
                 :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (alignment-pad :initarg :alignment-pad :type xcb:-ignore)
    (alignment-pad~ :initform
                   '(name alignment-pad type xcb:void size
@@ -108,7 +107,6 @@
                            (lognot 3))
                           (xcb:-fieldref 'driver-name-length)))
                   :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (device-name :initarg :device-name :type xcb:-ignore)
    (device-name~ :initform
                 '(name device-name type xcb:char size
diff --git a/xcb-dri3.el b/xcb-dri3.el
index 6fd34f3..ad69b43 100644
--- a/xcb-dri3.el
+++ b/xcb-dri3.el
@@ -121,18 +121,18 @@
    (pad~0 :initform 2 :type xcb:-pad)))
 (defclass xcb:dri3:GetSupportedModifiers~reply
   (xcb:-reply)
-  ((pad~0 :initform 1 :type xcb:-pad)
+  ((pad~0 :initform 8 :type xcb:-pad-align)
    (~sequence :type xcb:CARD16)
    (length :type xcb:CARD32)
+   (pad~1 :initform 1 :type xcb:-pad)
    (num-window-modifiers :initarg :num-window-modifiers :type xcb:CARD32)
    (num-screen-modifiers :initarg :num-screen-modifiers :type xcb:CARD32)
-   (pad~1 :initform 16 :type xcb:-pad)
+   (pad~2 :initform 16 :type xcb:-pad)
    (window-modifiers :initarg :window-modifiers :type xcb:-ignore)
    (window-modifiers~ :initform
                      '(name window-modifiers type xcb:CARD64 size
                             (xcb:-fieldref 'num-window-modifiers))
                      :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (screen-modifiers :initarg :screen-modifiers :type xcb:-ignore)
    (screen-modifiers~ :initform
                      '(name screen-modifiers type xcb:CARD64 size
@@ -142,10 +142,11 @@
 (defclass xcb:dri3:PixmapFromBuffers
   (xcb:-request)
   ((~opcode :initform 7 :type xcb:-u1)
+   (pad~0 :initform 8 :type xcb:-pad-align)
    (pixmap :initarg :pixmap :type xcb:PIXMAP)
    (window :initarg :window :type xcb:WINDOW)
    (num-buffers :initarg :num-buffers :type xcb:CARD8)
-   (pad~0 :initform 3 :type xcb:-pad)
+   (pad~1 :initform 3 :type xcb:-pad)
    (width :initarg :width :type xcb:CARD16)
    (height :initarg :height :type xcb:CARD16)
    (stride0 :initarg :stride0 :type xcb:CARD32)
@@ -158,7 +159,7 @@
    (offset3 :initarg :offset3 :type xcb:CARD32)
    (depth :initarg :depth :type xcb:CARD8)
    (bpp :initarg :bpp :type xcb:CARD8)
-   (pad~1 :initform 2 :type xcb:-pad)
+   (pad~2 :initform 2 :type xcb:-pad)
    (modifier :initarg :modifier :type xcb:CARD64)
    (buffers :initarg :buffers :type xcb:-ignore)
    (buffers~ :initform
@@ -172,28 +173,27 @@
    (pixmap :initarg :pixmap :type xcb:PIXMAP)))
 (defclass xcb:dri3:BuffersFromPixmap~reply
   (xcb:-reply)
-  ((nfd :initarg :nfd :type xcb:CARD8)
+  ((pad~0 :initform 8 :type xcb:-pad-align)
    (~sequence :type xcb:CARD16)
    (length :type xcb:CARD32)
+   (nfd :initarg :nfd :type xcb:CARD8)
    (width :initarg :width :type xcb:CARD16)
    (height :initarg :height :type xcb:CARD16)
-   (pad~0 :initform 4 :type xcb:-pad)
+   (pad~1 :initform 4 :type xcb:-pad)
    (modifier :initarg :modifier :type xcb:CARD64)
    (depth :initarg :depth :type xcb:CARD8)
    (bpp :initarg :bpp :type xcb:CARD8)
-   (pad~1 :initform 6 :type xcb:-pad)
+   (pad~2 :initform 6 :type xcb:-pad)
    (strides :initarg :strides :type xcb:-ignore)
    (strides~ :initform
             '(name strides type xcb:CARD32 size
                    (xcb:-fieldref 'nfd))
             :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (offsets :initarg :offsets :type xcb:-ignore)
    (offsets~ :initform
             '(name offsets type xcb:CARD32 size
                    (xcb:-fieldref 'nfd))
             :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (buffers :initarg :buffers :type xcb:-ignore)
    (buffers~ :initform
             '(name buffers type xcb:fd size
diff --git a/xcb-glx.el b/xcb-glx.el
index d1e9309..c6348b3 100644
--- a/xcb-glx.el
+++ b/xcb-glx.el
@@ -570,13 +570,11 @@
                         (xcb:-fieldref 'num-versions)
                         2))
                 :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (gl-extension-string :initarg :gl-extension-string :type xcb:-ignore)
    (gl-extension-string~ :initform
                         '(name gl-extension-string type xcb:char size
                                (xcb:-fieldref 'gl-str-len))
                         :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (glx-extension-string :initarg :glx-extension-string :type xcb:-ignore)
    (glx-extension-string~ :initform
                          '(name glx-extension-string type xcb:char size
@@ -616,13 +614,11 @@
                         (xcb:-fieldref 'num-versions)
                         3))
                 :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (gl-extension-string :initarg :gl-extension-string :type xcb:-ignore)
    (gl-extension-string~ :initform
                         '(name gl-extension-string type xcb:char size
                                (xcb:-fieldref 'gl-str-len))
                         :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (glx-extension-string :initarg :glx-extension-string :type xcb:-ignore)
    (glx-extension-string~ :initform
                          '(name glx-extension-string type xcb:char size
@@ -774,10 +770,11 @@
    (plane :initarg :plane :type xcb:INT32)))
 (defclass xcb:glx:GetClipPlane~reply
   (xcb:-reply)
-  ((pad~0 :initform 1 :type xcb:-pad)
+  ((pad~0 :initform 8 :type xcb:-pad-align)
    (~sequence :type xcb:CARD16)
    (length :type xcb:CARD32)
-   (pad~1 :initform 24 :type xcb:-pad)
+   (pad~1 :initform 1 :type xcb:-pad)
+   (pad~2 :initform 24 :type xcb:-pad)
    (data :initarg :data :type xcb:-ignore)
    (data~ :initform
          '(name data type xcb:glx:FLOAT64 size
@@ -793,13 +790,14 @@
    (pname :initarg :pname :type xcb:CARD32)))
 (defclass xcb:glx:GetDoublev~reply
   (xcb:-reply)
-  ((pad~0 :initform 1 :type xcb:-pad)
+  ((pad~0 :initform 8 :type xcb:-pad-align)
    (~sequence :type xcb:CARD16)
    (length :type xcb:CARD32)
-   (pad~1 :initform 4 :type xcb:-pad)
+   (pad~1 :initform 1 :type xcb:-pad)
+   (pad~2 :initform 4 :type xcb:-pad)
    (n :initarg :n :type xcb:CARD32)
    (datum :initarg :datum :type xcb:glx:FLOAT64)
-   (pad~2 :initform 8 :type xcb:-pad)
+   (pad~3 :initform 8 :type xcb:-pad)
    (data :initarg :data :type xcb:-ignore)
    (data~ :initform
          '(name data type xcb:glx:FLOAT64 size
@@ -907,13 +905,14 @@
    (query :initarg :query :type xcb:CARD32)))
 (defclass xcb:glx:GetMapdv~reply
   (xcb:-reply)
-  ((pad~0 :initform 1 :type xcb:-pad)
+  ((pad~0 :initform 8 :type xcb:-pad-align)
    (~sequence :type xcb:CARD16)
    (length :type xcb:CARD32)
-   (pad~1 :initform 4 :type xcb:-pad)
+   (pad~1 :initform 1 :type xcb:-pad)
+   (pad~2 :initform 4 :type xcb:-pad)
    (n :initarg :n :type xcb:CARD32)
    (datum :initarg :datum :type xcb:glx:FLOAT64)
-   (pad~2 :initform 8 :type xcb:-pad)
+   (pad~3 :initform 8 :type xcb:-pad)
    (data :initarg :data :type xcb:-ignore)
    (data~ :initform
          '(name data type xcb:glx:FLOAT64 size
@@ -1152,13 +1151,14 @@
    (pname :initarg :pname :type xcb:CARD32)))
 (defclass xcb:glx:GetTexGendv~reply
   (xcb:-reply)
-  ((pad~0 :initform 1 :type xcb:-pad)
+  ((pad~0 :initform 8 :type xcb:-pad-align)
    (~sequence :type xcb:CARD16)
    (length :type xcb:CARD32)
-   (pad~1 :initform 4 :type xcb:-pad)
+   (pad~1 :initform 1 :type xcb:-pad)
+   (pad~2 :initform 4 :type xcb:-pad)
    (n :initarg :n :type xcb:CARD32)
    (datum :initarg :datum :type xcb:glx:FLOAT64)
-   (pad~2 :initform 8 :type xcb:-pad)
+   (pad~3 :initform 8 :type xcb:-pad)
    (data :initarg :data :type xcb:-ignore)
    (data~ :initform
          '(name data type xcb:glx:FLOAT64 size
diff --git a/xcb-present.el b/xcb-present.el
index 92472b5..0425dbe 100644
--- a/xcb-present.el
+++ b/xcb-present.el
@@ -90,6 +90,7 @@
 (defclass xcb:present:Pixmap
   (xcb:-request)
   ((~opcode :initform 1 :type xcb:-u1)
+   (pad~0 :initform 8 :type xcb:-pad-align)
    (window :initarg :window :type xcb:WINDOW)
    (pixmap :initarg :pixmap :type xcb:PIXMAP)
    (serial :initarg :serial :type xcb:CARD32)
@@ -101,7 +102,7 @@
    (wait-fence :initarg :wait-fence :type xcb:sync:FENCE)
    (idle-fence :initarg :idle-fence :type xcb:sync:FENCE)
    (options :initarg :options :type xcb:CARD32)
-   (pad~0 :initform 4 :type xcb:-pad)
+   (pad~1 :initform 4 :type xcb:-pad)
    (target-msc :initarg :target-msc :type xcb:CARD64)
    (divisor :initarg :divisor :type xcb:CARD64)
    (remainder :initarg :remainder :type xcb:CARD64)
@@ -113,9 +114,10 @@
 (defclass xcb:present:NotifyMSC
   (xcb:-request)
   ((~opcode :initform 2 :type xcb:-u1)
+   (pad~0 :initform 8 :type xcb:-pad-align)
    (window :initarg :window :type xcb:WINDOW)
    (serial :initarg :serial :type xcb:CARD32)
-   (pad~0 :initform 4 :type xcb:-pad)
+   (pad~1 :initform 4 :type xcb:-pad)
    (target-msc :initarg :target-msc :type xcb:CARD64)
    (divisor :initarg :divisor :type xcb:CARD64)
    (remainder :initarg :remainder :type xcb:CARD64)))
@@ -169,6 +171,7 @@
 (defclass xcb:present:CompleteNotify
   (xcb:-generic-event)
   ((~evtype :initform 1)
+   (pad~0 :initform 8 :type xcb:-pad-align)
    (kind :initarg :kind :type xcb:CARD8)
    (mode :initarg :mode :type xcb:CARD8)
    (event :initarg :event :type xcb:present:EVENT)
@@ -190,8 +193,9 @@
 (defclass xcb:present:RedirectNotify
   (xcb:-generic-event)
   ((~evtype :initform 3)
+   (pad~0 :initform 8 :type xcb:-pad-align)
    (update-window :initarg :update-window :type xcb:BOOL)
-   (pad~0 :initform 1 :type xcb:-pad)
+   (pad~1 :initform 1 :type xcb:-pad)
    (event :initarg :event :type xcb:present:EVENT)
    (event-window :initarg :event-window :type xcb:WINDOW)
    (window :initarg :window :type xcb:WINDOW)
@@ -207,7 +211,7 @@
    (wait-fence :initarg :wait-fence :type xcb:sync:FENCE)
    (idle-fence :initarg :idle-fence :type xcb:sync:FENCE)
    (options :initarg :options :type xcb:CARD32)
-   (pad~1 :initform 4 :type xcb:-pad)
+   (pad~2 :initform 4 :type xcb:-pad)
    (target-msc :initarg :target-msc :type xcb:CARD64)
    (divisor :initarg :divisor :type xcb:CARD64)
    (remainder :initarg :remainder :type xcb:CARD64)
diff --git a/xcb-randr.el b/xcb-randr.el
index 9cbc8b9..81ea15e 100644
--- a/xcb-randr.el
+++ b/xcb-randr.el
@@ -163,7 +163,6 @@
           '(name sizes type xcb:randr:ScreenSize size
                  (xcb:-fieldref 'nSizes))
           :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (rates :initarg :rates :type xcb:-ignore)
    (rates~ :initform
           '(name rates type xcb:randr:RefreshRates size
@@ -248,19 +247,16 @@
           '(name crtcs type xcb:randr:CRTC size
                  (xcb:-fieldref 'num-crtcs))
           :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (outputs :initarg :outputs :type xcb:-ignore)
    (outputs~ :initform
             '(name outputs type xcb:randr:OUTPUT size
                    (xcb:-fieldref 'num-outputs))
             :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (modes :initarg :modes :type xcb:-ignore)
    (modes~ :initform
           '(name modes type xcb:randr:ModeInfo size
                  (xcb:-fieldref 'num-modes))
           :type xcb:-list)
-   (pad~4 :initform 4 :type xcb:-pad-align)
    (names :initarg :names :type xcb:-ignore)
    (names~ :initform
           '(name names type xcb:BYTE size
@@ -297,19 +293,16 @@
           '(name crtcs type xcb:randr:CRTC size
                  (xcb:-fieldref 'num-crtcs))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (modes :initarg :modes :type xcb:-ignore)
    (modes~ :initform
           '(name modes type xcb:randr:MODE size
                  (xcb:-fieldref 'num-modes))
           :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (clones :initarg :clones :type xcb:-ignore)
    (clones~ :initform
            '(name clones type xcb:randr:OUTPUT size
                   (xcb:-fieldref 'num-clones))
            :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (name :initarg :name :type xcb:-ignore)
    (name~ :initform
          '(name name type xcb:BYTE size
@@ -481,7 +474,6 @@
             '(name outputs type xcb:randr:OUTPUT size
                    (xcb:-fieldref 'num-outputs))
             :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (possible :initarg :possible :type xcb:-ignore)
    (possible~ :initform
              '(name possible type xcb:randr:OUTPUT size
@@ -539,13 +531,11 @@
         '(name red type xcb:CARD16 size
                (xcb:-fieldref 'size))
         :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (green :initarg :green :type xcb:-ignore)
    (green~ :initform
           '(name green type xcb:CARD16 size
                  (xcb:-fieldref 'size))
           :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (blue :initarg :blue :type xcb:-ignore)
    (blue~ :initform
          '(name blue type xcb:CARD16 size
@@ -563,13 +553,11 @@
         '(name red type xcb:CARD16 size
                (xcb:-fieldref 'size))
         :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (green :initarg :green :type xcb:-ignore)
    (green~ :initform
           '(name green type xcb:CARD16 size
                  (xcb:-fieldref 'size))
           :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (blue :initarg :blue :type xcb:-ignore)
    (blue~ :initform
          '(name blue type xcb:CARD16 size
@@ -597,19 +585,16 @@
           '(name crtcs type xcb:randr:CRTC size
                  (xcb:-fieldref 'num-crtcs))
           :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (outputs :initarg :outputs :type xcb:-ignore)
    (outputs~ :initform
             '(name outputs type xcb:randr:OUTPUT size
                    (xcb:-fieldref 'num-outputs))
             :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (modes :initarg :modes :type xcb:-ignore)
    (modes~ :initform
           '(name modes type xcb:randr:ModeInfo size
                  (xcb:-fieldref 'num-modes))
           :type xcb:-list)
-   (pad~4 :initform 4 :type xcb:-pad-align)
    (names :initarg :names :type xcb:-ignore)
    (names~ :initform
           '(name names type xcb:BYTE size
@@ -668,13 +653,12 @@
                    '(name pending-params type xcb:render:FIXED size
                           (xcb:-fieldref 'pending-nparams))
                    :type xcb:-list)
-   (pad~4 :initform 4 :type xcb:-pad-align)
    (current-filter-name :initarg :current-filter-name :type xcb:-ignore)
    (current-filter-name~ :initform
                         '(name current-filter-name type xcb:char size
                                (xcb:-fieldref 'current-len))
                         :type xcb:-list)
-   (pad~5 :initform 4 :type xcb:-pad-align)
+   (pad~4 :initform 4 :type xcb:-pad-align)
    (current-params :initarg :current-params :type xcb:-ignore)
    (current-params~ :initform
                    '(name current-params type xcb:render:FIXED size
@@ -790,25 +774,21 @@
           '(name crtcs type xcb:randr:CRTC size
                  (xcb:-fieldref 'num-crtcs))
           :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (outputs :initarg :outputs :type xcb:-ignore)
    (outputs~ :initform
             '(name outputs type xcb:randr:OUTPUT size
                    (xcb:-fieldref 'num-outputs))
             :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (associated-providers :initarg :associated-providers :type xcb:-ignore)
    (associated-providers~ :initform
                          '(name associated-providers type xcb:randr:PROVIDER 
size
                                 (xcb:-fieldref 'num-associated-providers))
                          :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (associated-capability :initarg :associated-capability :type xcb:-ignore)
    (associated-capability~ :initform
                           '(name associated-capability type xcb:CARD32 size
                                  (xcb:-fieldref 'num-associated-providers))
                           :type xcb:-list)
-   (pad~4 :initform 4 :type xcb:-pad-align)
    (name :initarg :name :type xcb:-ignore)
    (name~ :initform
          '(name name type xcb:char size
@@ -1077,7 +1057,6 @@
           '(name crtcs type xcb:randr:CRTC size
                  (xcb:-fieldref 'num-crtcs))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (outputs :initarg :outputs :type xcb:-ignore)
    (outputs~ :initform
             '(name outputs type xcb:randr:OUTPUT size
diff --git a/xcb-record.el b/xcb-record.el
index 0308c8f..3996ae6 100644
--- a/xcb-record.el
+++ b/xcb-record.el
@@ -113,7 +113,6 @@
                  '(name client-specs type xcb:record:ClientSpec size
                         (xcb:-fieldref 'num-client-specs))
                  :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (ranges :initarg :ranges :type xcb:-ignore)
    (ranges~ :initform
            '(name ranges type xcb:record:Range size
@@ -133,7 +132,6 @@
                  '(name client-specs type xcb:record:ClientSpec size
                         (xcb:-fieldref 'num-client-specs))
                  :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (ranges :initarg :ranges :type xcb:-ignore)
    (ranges~ :initform
            '(name ranges type xcb:record:Range size
diff --git a/xcb-render.el b/xcb-render.el
index 21095c7..423f6cd 100644
--- a/xcb-render.el
+++ b/xcb-render.el
@@ -281,13 +281,11 @@
             '(name formats type xcb:render:PICTFORMINFO size
                    (xcb:-fieldref 'num-formats))
             :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (screens :initarg :screens :type xcb:-ignore)
    (screens~ :initform
             '(name screens type xcb:render:PICTSCREEN size
                    (xcb:-fieldref 'num-screens))
             :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (subpixels :initarg :subpixels :type xcb:-ignore)
    (subpixels~ :initform
               '(name subpixels type xcb:CARD32 size
@@ -507,13 +505,11 @@
              '(name glyphids type xcb:CARD32 size
                     (xcb:-fieldref 'glyphs-len))
              :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (glyphs :initarg :glyphs :type xcb:-ignore)
    (glyphs~ :initform
            '(name glyphs type xcb:render:GLYPHINFO size
                   (xcb:-fieldref 'glyphs-len))
            :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (data :initarg :data :type xcb:-ignore)
    (data~ :initform
          '(name data type xcb:BYTE size nil)
@@ -631,7 +627,6 @@
             '(name aliases type xcb:CARD16 size
                    (xcb:-fieldref 'num-aliases))
             :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (filters :initarg :filters :type xcb:-ignore)
    (filters~ :initform
             '(name filters type xcb:STR size
@@ -709,7 +704,6 @@
           '(name stops type xcb:render:FIXED size
                  (xcb:-fieldref 'num-stops))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (colors :initarg :colors :type xcb:-ignore)
    (colors~ :initform
            '(name colors type xcb:render:COLOR size
@@ -730,7 +724,6 @@
           '(name stops type xcb:render:FIXED size
                  (xcb:-fieldref 'num-stops))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (colors :initarg :colors :type xcb:-ignore)
    (colors~ :initform
            '(name colors type xcb:render:COLOR size
@@ -749,7 +742,6 @@
           '(name stops type xcb:render:FIXED size
                  (xcb:-fieldref 'num-stops))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (colors :initarg :colors :type xcb:-ignore)
    (colors~ :initform
            '(name colors type xcb:render:COLOR size
diff --git a/xcb-types.el b/xcb-types.el
index 0c172b6..6e3547d 100644
--- a/xcb-types.el
+++ b/xcb-types.el
@@ -492,10 +492,14 @@ The optional POS argument indicates current byte index of 
the field (used by
        (setq value (eval value `((obj . ,obj)))))
      (make-vector value 0))
     (`xcb:-pad-align
-     (unless (integerp value)
-       (setq value (eval value `((obj . ,obj)))))
      ;; The length slot in xcb:-request is left out
      (let ((len (if (object-of-class-p obj 'xcb:-request) (+ pos 2) pos)))
+       (when (vectorp value)
+         ;; Alignment with offset.
+         (setq len (- len (aref value 1))
+               value (aref value 0)))
+       (unless (integerp value)
+         (setq value (eval value `((obj . ,obj)))))
        (make-vector (% (- value (% len value)) value) 0)))
     (`xcb:-list
      (let* ((list-name (plist-get value 'name))
@@ -546,10 +550,13 @@ The optional POS argument indicates current byte index of 
the field (used by
      (xcb:marshal value))
     (x (error "[XCB] Unsupported type for marshalling: %s" x))))
 
-(cl-defmethod xcb:unmarshal ((obj xcb:-struct) byte-array &optional ctx)
+(cl-defmethod xcb:unmarshal ((obj xcb:-struct) byte-array &optional ctx
+                             total-length)
   "Fill in fields of struct OBJ according to its byte-array representation.
 
 The optional argument CTX is for <paramref>."
+  (unless total-length
+    (setq total-length (length byte-array)))
   (let ((slots (eieio-class-slots (eieio-object-class obj)))
         (result 0)
         slot-name tmp type)
@@ -560,14 +567,14 @@ The optional argument CTX is for <paramref>."
               tmp (xcb:-unmarshal-field obj type byte-array 0
                                         (when (slot-boundp obj slot-name)
                                           (eieio-oref-default obj slot-name))
-                                        ctx))
+                                        ctx total-length))
         (setf (slot-value obj slot-name) (car tmp))
         (setq byte-array (substring byte-array (cadr tmp)))
         (setq result (+ result (cadr tmp)))))
     result))
 
 (cl-defmethod xcb:-unmarshal-field ((obj xcb:-struct) type data offset
-                                    initform &optional ctx)
+                                    initform &optional ctx total-length)
   "Return the value of a field in struct OBJ of type TYPE, byte-array
 representation DATA, and default value INITFORM.
 
@@ -606,12 +613,17 @@ and the second the consumed length."
          (setq initform (cadr initform)))
        (setq initform (eval initform `((obj . ,obj) (ctx . ,ctx)))))
      (list initform initform))
-    (`xcb:-pad-align                 ;assume the whole data is aligned
-     (unless (integerp initform)
-       (when (eq 'quote (car initform))
-         (setq initform (cadr initform)))
-       (setq initform (eval initform `((obj . ,obj) (ctx . ,ctx)))))
-     (list initform (% (- (length data) offset) initform)))
+    (`xcb:-pad-align
+     (let ((len (- total-length (- (length data) offset))))
+       (if (vectorp initform)
+           ;; Alignment with offset.
+           (setq len (- len (aref initform 1))
+                 initform (aref initform 0))
+         (unless (integerp initform)
+           (when (eq 'quote (car initform))
+             (setq initform (cadr initform)))
+           (setq initform (eval initform `((obj . ,obj) (ctx . ,ctx))))))
+       (list initform (% (- initform (% len initform)) initform))))
     (`xcb:-list
      (when (eq 'quote (car initform))   ;unquote the form
        (setq initform (cadr initform)))
@@ -637,7 +649,8 @@ and the second the consumed length."
           (let ((count 0)
                 result tmp)
             (dotimes (_ list-size)
-              (setq tmp (xcb:-unmarshal-field obj x data (+ offset count) nil))
+              (setq tmp (xcb:-unmarshal-field obj x data (+ offset count) nil
+                                              nil total-length))
               (setq result (nconc result (list (car tmp))))
               (setq count (+ count (cadr tmp))))
             (setf (slot-value obj list-name) result)
@@ -672,14 +685,16 @@ and the second the consumed length."
                    (throw 'break nil))))
              (unless (eq slot-type 'xcb:-ignore)
                (setq tmp (xcb:-unmarshal-field obj slot-type data offset
-                                               (eieio-oref-default obj name)))
+                                               (eieio-oref-default obj name)
+                                               nil total-length))
                (setf (slot-value obj name) (car tmp))
                (setq count (+ count (cadr tmp)))
                (setq data (substring data (cadr tmp)))))))
        (list initform count)))
     ((and x (guard (child-of-class-p x 'xcb:-struct)))
      (let* ((struct-obj (make-instance x))
-            (tmp (xcb:unmarshal struct-obj (substring data offset) obj)))
+            (tmp (xcb:unmarshal struct-obj (substring data offset) obj
+                                total-length)))
        (list struct-obj tmp)))
     (x (error "[XCB] Unsupported type for unmarshalling: %s" x))))
 
@@ -771,10 +786,13 @@ This result is converted from the first bounded slot."
       (setq result (vconcat result (make-vector (- size (length result)) 0))))
     result))
 ;;
-(cl-defmethod xcb:unmarshal ((obj xcb:-union) byte-array &optional ctx)
+(cl-defmethod xcb:unmarshal ((obj xcb:-union) byte-array &optional ctx
+                             total-length)
   "Fill in every field in union OBJ, according to BYTE-ARRAY.
 
 The optional argument CTX is for <paramref>."
+  (unless total-length
+    (setq total-length (length byte-array)))
   (let ((slots (eieio-class-slots (eieio-object-class obj)))
         slot-name tmp type)
     (dolist (slot slots)
@@ -784,7 +802,7 @@ The optional argument CTX is for <paramref>."
               tmp (xcb:-unmarshal-field obj type byte-array 0
                                         (when (slot-boundp obj slot-name)
                                           (eieio-oref-default obj slot-name))
-                                        ctx))
+                                        ctx total-length))
         (setf (slot-value obj (eieio-slot-descriptor-name slot)) (car tmp))))
     (slot-value obj '~size)))
 
diff --git a/xcb-xf86dri.el b/xcb-xf86dri.el
index ee2c366..b007010 100644
--- a/xcb-xf86dri.el
+++ b/xcb-xf86dri.el
@@ -167,7 +167,6 @@
                '(name clip-rects type xcb:xf86dri:DrmClipRect size
                       (xcb:-fieldref 'num-clip-rects))
                :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (back-clip-rects :initarg :back-clip-rects :type xcb:-ignore)
    (back-clip-rects~ :initform
                     '(name back-clip-rects type xcb:xf86dri:DrmClipRect size
diff --git a/xcb-xf86vidmode.el b/xcb-xf86vidmode.el
index 60618e9..d429888 100644
--- a/xcb-xf86vidmode.el
+++ b/xcb-xf86vidmode.el
@@ -161,19 +161,16 @@
           '(name hsync type xcb:xf86vidmode:SYNCRANGE size
                  (xcb:-fieldref 'num-hsync))
           :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (vsync :initarg :vsync :type xcb:-ignore)
    (vsync~ :initform
           '(name vsync type xcb:xf86vidmode:SYNCRANGE size
                  (xcb:-fieldref 'num-vsync))
           :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (vendor :initarg :vendor :type xcb:-ignore)
    (vendor~ :initform
            '(name vendor type xcb:char size
                   (xcb:-fieldref 'vendor-length))
            :type xcb:-list)
-   (pad~4 :initform 4 :type xcb:-pad-align)
    (alignment-pad :initarg :alignment-pad :type xcb:-ignore)
    (alignment-pad~ :initform
                   '(name alignment-pad type xcb:void size
@@ -185,7 +182,6 @@
                            (lognot 3))
                           (xcb:-fieldref 'vendor-length)))
                   :type xcb:-list)
-   (pad~5 :initform 4 :type xcb:-pad-align)
    (model :initarg :model :type xcb:-ignore)
    (model~ :initform
           '(name model type xcb:char size
@@ -431,7 +427,6 @@
                  1)
                 (lognot 1)))
         :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (green :initarg :green :type xcb:-ignore)
    (green~ :initform
           '(name green type xcb:CARD16 size
@@ -441,7 +436,6 @@
                    1)
                   (lognot 1)))
           :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (blue :initarg :blue :type xcb:-ignore)
    (blue~ :initform
          '(name blue type xcb:CARD16 size
@@ -466,7 +460,6 @@
                  1)
                 (lognot 1)))
         :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (green :initarg :green :type xcb:-ignore)
    (green~ :initform
           '(name green type xcb:CARD16 size
@@ -476,7 +469,6 @@
                    1)
                   (lognot 1)))
           :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (blue :initarg :blue :type xcb:-ignore)
    (blue~ :initform
          '(name blue type xcb:CARD16 size
diff --git a/xcb-xfixes.el b/xcb-xfixes.el
index 7973d0b..db2b25a 100644
--- a/xcb-xfixes.el
+++ b/xcb-xfixes.el
@@ -345,7 +345,6 @@
                          (xcb:-fieldref 'width)
                          (xcb:-fieldref 'height)))
                  :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (name :initarg :name :type xcb:-ignore)
    (name~ :initform
          '(name name type xcb:char size
diff --git a/xcb-xinput.el b/xcb-xinput.el
index f4da64e..ae38b67 100644
--- a/xcb-xinput.el
+++ b/xcb-xinput.el
@@ -137,13 +137,16 @@
           cases
           ((0 min-keycode max-keycode num-keys pad~0)
            (1 num-buttons)
-           (2 axes-len mode motion-size axes)))
+           (2 pad~1 axes-len mode motion-size axes)))
         :type xcb:-switch)
    (min-keycode :initarg :min-keycode :type xcb:xinput:KeyCode)
    (max-keycode :initarg :max-keycode :type xcb:xinput:KeyCode)
    (num-keys :initarg :num-keys :type xcb:CARD16)
    (pad~0 :initform 2 :type xcb:-pad)
    (num-buttons :initarg :num-buttons :type xcb:CARD16)
+   (pad~1 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (axes-len :initarg :axes-len :type xcb:CARD8)
    (mode :initarg :mode :type xcb:CARD8)
    (motion-size :initarg :motion-size :type xcb:CARD32)
@@ -177,7 +180,6 @@
             '(name devices type xcb:xinput:DeviceInfo size
                    (xcb:-fieldref 'devices-len))
             :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (infos :initarg :infos :type xcb:-ignore)
    (infos~ :initform
           '(name infos type xcb:xinput:InputInfo size
@@ -193,13 +195,12 @@
                               i))))
                          (slot-value obj 'devices))))
           :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (names :initarg :names :type xcb:-ignore)
    (names~ :initform
           '(name names type xcb:STR size
                  (xcb:-fieldref 'devices-len))
           :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)))
+   (pad~1 :initform 4 :type xcb:-pad-align)))
 
 (xcb:deftypealias 'xcb:xinput:EventTypeBase 'xcb:CARD8)
 
@@ -276,7 +277,6 @@
                  '(name this-classes type xcb:xinput:EventClass size
                         (xcb:-fieldref 'num-this-classes))
                  :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (all-classes :initarg :all-classes :type xcb:-ignore)
    (all-classes~ :initform
                 '(name all-classes type xcb:xinput:EventClass size
@@ -933,22 +933,28 @@
         '(expression
           (xcb:-fieldref 'class-id)
           cases
-          ((0 num-keys pad~0 keys)
-           (1 num-buttons pad~1 buttons)
-           (2 num-valuators mode valuators)))
+          ((0 pad~0 num-keys pad~1 keys)
+           (1 num-buttons pad~2 buttons)
+           (2 pad~3 num-valuators mode valuators)))
         :type xcb:-switch)
+   (pad~0 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (num-keys :initarg :num-keys :type xcb:CARD8)
-   (pad~0 :initform 1 :type xcb:-pad)
+   (pad~1 :initform 1 :type xcb:-pad)
    (keys :initarg :keys :type xcb:-ignore)
    (keys~ :initform
          '(name keys type xcb:CARD8 size 32)
          :type xcb:-list)
    (num-buttons :initarg :num-buttons :type xcb:CARD8)
-   (pad~1 :initform 1 :type xcb:-pad)
+   (pad~2 :initform 1 :type xcb:-pad)
    (buttons :initarg :buttons :type xcb:-ignore)
    (buttons~ :initform
             '(name buttons type xcb:CARD8 size 32)
             :type xcb:-list)
+   (pad~3 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (num-valuators :initarg :num-valuators :type xcb:CARD8)
    (mode :initarg :mode :type xcb:CARD8)
    (valuators :initarg :valuators :type xcb:-ignore)
@@ -1019,13 +1025,11 @@
                       '(name resolution-values type xcb:CARD32 size
                              (xcb:-fieldref 'num-valuators))
                       :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (resolution-min :initarg :resolution-min :type xcb:-ignore)
    (resolution-min~ :initform
                    '(name resolution-min type xcb:CARD32 size
                           (xcb:-fieldref 'num-valuators))
                    :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (resolution-max :initarg :resolution-max :type xcb:-ignore)
    (resolution-max~ :initform
                    '(name resolution-max type xcb:CARD32 size
@@ -1081,8 +1085,8 @@
           cases
           ((1 num-valuators resolution-values resolution-min resolution-max)
            (2 min-x max-x min-y max-y flip-x flip-y rotation button-threshold)
-           (3 status iscore pad~2)
-           (4 enable pad~3)
+           (3 status iscore pad~0)
+           (4 enable pad~1)
            (5 offset-x offset-y width height screen following)))
         :type xcb:-switch)
    (num-valuators :initarg :num-valuators :type xcb:CARD32)
@@ -1091,13 +1095,11 @@
                       '(name resolution-values type xcb:CARD32 size
                              (xcb:-fieldref 'num-valuators))
                       :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (resolution-min :initarg :resolution-min :type xcb:-ignore)
    (resolution-min~ :initform
                    '(name resolution-min type xcb:CARD32 size
                           (xcb:-fieldref 'num-valuators))
                    :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (resolution-max :initarg :resolution-max :type xcb:-ignore)
    (resolution-max~ :initform
                    '(name resolution-max type xcb:CARD32 size
@@ -1113,9 +1115,9 @@
    (button-threshold :initarg :button-threshold :type xcb:CARD32)
    (status :initarg :status :type xcb:CARD8)
    (iscore :initarg :iscore :type xcb:CARD8)
-   (pad~2 :initform 2 :type xcb:-pad)
+   (pad~0 :initform 2 :type xcb:-pad)
    (enable :initarg :enable :type xcb:CARD8)
-   (pad~3 :initform 3 :type xcb:-pad)
+   (pad~1 :initform 3 :type xcb:-pad)
    (offset-x :initarg :offset-x :type xcb:CARD32)
    (offset-y :initarg :offset-y :type xcb:CARD32)
    (width :initarg :width :type xcb:CARD32)
@@ -1633,7 +1635,6 @@
                    31)
                   32))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (labels :initarg :labels :type xcb:-ignore)
    (labels~ :initform
            '(name labels type xcb:ATOM size
@@ -1694,18 +1695,24 @@
         '(expression
           (xcb:-fieldref 'type)
           cases
-          ((0 num-keys keys)
-           (1 num-buttons state labels)
-           (2 number label min max value resolution mode pad~1)
-           (3 number* scroll-type pad~2 flags increment)
+          ((0 pad~0 num-keys keys)
+           (1 pad~1 num-buttons state labels)
+           (2 pad~2 number label min max value resolution mode pad~3)
+           (3 pad~4 number* scroll-type pad~5 flags increment)
            (8 mode* num-touches)))
         :type xcb:-switch)
+   (pad~0 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (num-keys :initarg :num-keys :type xcb:CARD16)
    (keys :initarg :keys :type xcb:-ignore)
    (keys~ :initform
          '(name keys type xcb:CARD32 size
                 (xcb:-fieldref 'num-keys))
          :type xcb:-list)
+   (pad~1 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (num-buttons :initarg :num-buttons :type xcb:CARD16)
    (state :initarg :state :type xcb:-ignore)
    (state~ :initform
@@ -1716,12 +1723,14 @@
                    31)
                   32))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (labels :initarg :labels :type xcb:-ignore)
    (labels~ :initform
            '(name labels type xcb:ATOM size
                   (xcb:-fieldref 'num-buttons))
            :type xcb:-list)
+   (pad~2 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (number :initarg :number :type xcb:CARD16)
    (label :initarg :label :type xcb:ATOM)
    (min :initarg :min :type xcb:xinput:FP3232)
@@ -1729,10 +1738,13 @@
    (value :initarg :value :type xcb:xinput:FP3232)
    (resolution :initarg :resolution :type xcb:CARD32)
    (mode :initarg :mode :type xcb:CARD8)
-   (pad~1 :initform 3 :type xcb:-pad)
+   (pad~3 :initform 3 :type xcb:-pad)
+   (pad~4 :initform
+         [4 2]
+         :type xcb:-pad-align)
    (number* :initarg :number* :type xcb:CARD16)
    (scroll-type :initarg :scroll-type :type xcb:CARD16)
-   (pad~2 :initform 2 :type xcb:-pad)
+   (pad~5 :initform 2 :type xcb:-pad)
    (flags :initarg :flags :type xcb:CARD32)
    (increment :initarg :increment :type xcb:xinput:FP3232)
    (mode* :initarg :mode* :type xcb:CARD8)
@@ -1888,7 +1900,6 @@
          '(name mask type xcb:CARD32 size
                 (xcb:-fieldref 'mask-len))
          :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (modifiers :initarg :modifiers :type xcb:-ignore)
    (modifiers~ :initform
               '(name modifiers type xcb:CARD32 size
@@ -2279,13 +2290,11 @@
                 '(name button-mask type xcb:CARD32 size
                        (xcb:-fieldref 'buttons-len))
                 :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
    (valuator-mask~ :initform
                   '(name valuator-mask type xcb:CARD32 size
                          (xcb:-fieldref 'valuators-len))
                   :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (axisvalues :initarg :axisvalues :type xcb:-ignore)
    (axisvalues~ :initform
                '(name axisvalues type xcb:xinput:FP3232 size
@@ -2333,13 +2342,11 @@
                 '(name button-mask type xcb:CARD32 size
                        (xcb:-fieldref 'buttons-len))
                 :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
    (valuator-mask~ :initform
                   '(name valuator-mask type xcb:CARD32 size
                          (xcb:-fieldref 'valuators-len))
                   :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (axisvalues :initarg :axisvalues :type xcb:-ignore)
    (axisvalues~ :initform
                '(name axisvalues type xcb:xinput:FP3232 size
@@ -2478,7 +2485,6 @@
                   '(name valuator-mask type xcb:CARD32 size
                          (xcb:-fieldref 'valuators-len))
                   :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (axisvalues :initarg :axisvalues :type xcb:-ignore)
    (axisvalues~ :initform
                '(name axisvalues type xcb:xinput:FP3232 size
@@ -2494,7 +2500,6 @@
                                    i))))
                               (slot-value obj 'valuator-mask))))
                :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (axisvalues-raw :initarg :axisvalues-raw :type xcb:-ignore)
    (axisvalues-raw~ :initform
                    '(name axisvalues-raw type xcb:xinput:FP3232 size
@@ -2530,7 +2535,6 @@
                   '(name valuator-mask type xcb:CARD32 size
                          (xcb:-fieldref 'valuators-len))
                   :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (axisvalues :initarg :axisvalues :type xcb:-ignore)
    (axisvalues~ :initform
                '(name axisvalues type xcb:xinput:FP3232 size
@@ -2546,7 +2550,6 @@
                                    i))))
                               (slot-value obj 'valuator-mask))))
                :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (axisvalues-raw :initarg :axisvalues-raw :type xcb:-ignore)
    (axisvalues-raw~ :initform
                    '(name axisvalues-raw type xcb:xinput:FP3232 size
@@ -2599,13 +2602,11 @@
                 '(name button-mask type xcb:CARD32 size
                        (xcb:-fieldref 'buttons-len))
                 :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (valuator-mask :initarg :valuator-mask :type xcb:-ignore)
    (valuator-mask~ :initform
                   '(name valuator-mask type xcb:CARD32 size
                          (xcb:-fieldref 'valuators-len))
                   :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (axisvalues :initarg :axisvalues :type xcb:-ignore)
    (axisvalues~ :initform
                '(name axisvalues type xcb:xinput:FP3232 size
@@ -2661,7 +2662,6 @@
                   '(name valuator-mask type xcb:CARD32 size
                          (xcb:-fieldref 'valuators-len))
                   :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (axisvalues :initarg :axisvalues :type xcb:-ignore)
    (axisvalues~ :initform
                '(name axisvalues type xcb:xinput:FP3232 size
@@ -2677,7 +2677,6 @@
                                    i))))
                               (slot-value obj 'valuator-mask))))
                :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (axisvalues-raw :initarg :axisvalues-raw :type xcb:-ignore)
    (axisvalues-raw~ :initform
                    '(name axisvalues-raw type xcb:xinput:FP3232 size
@@ -2745,7 +2744,6 @@
            '(name events type xcb:xinput:EventForSend size
                   (xcb:-fieldref 'num-events))
            :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (classes :initarg :classes :type xcb:-ignore)
    (classes~ :initform
             '(name classes type xcb:xinput:EventClass size
diff --git a/xcb-xkb.el b/xcb-xkb.el
index 1f26deb..1ffcce4 100644
--- a/xcb-xkb.el
+++ b/xcb-xkb.el
@@ -320,7 +320,6 @@
            '(name string type xcb:char size
                   (xcb:-fieldref 'length))
            :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (alignment-pad :initarg :alignment-pad :type xcb:-ignore)
    (alignment-pad~ :initform
                   '(name alignment-pad type xcb:void size
@@ -358,7 +357,6 @@
         '(name map type xcb:xkb:KTMapEntry size
                (xcb:-fieldref 'nMapEntries))
         :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (preserve :initarg :preserve :type xcb:-ignore)
    (preserve~ :initform
              '(name preserve type xcb:xkb:ModDef size
@@ -477,7 +475,6 @@
             '(name entries type xcb:xkb:KTSetMapEntry size
                    (xcb:-fieldref 'nMapEntries))
             :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (preserve-entries :initarg :preserve-entries :type xcb:-ignore)
    (preserve-entries~ :initform
                      '(name preserve-entries type xcb:xkb:KTSetMapEntry size
@@ -599,7 +596,6 @@
                  (xcb:-popcount
                   (xcb:-fieldref 'namesPresent)))
           :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (maps :initarg :maps :type xcb:-ignore)
    (maps~ :initform
          '(name maps type xcb:xkb:IndicatorMap size
@@ -1323,7 +1319,6 @@
             '(name si-rtrn type xcb:xkb:SymInterpret size
                    (xcb:-fieldref 'nSIRtrn))
             :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (group-rtrn :initarg :group-rtrn :type xcb:-ignore)
    (group-rtrn~ :initform
                '(name group-rtrn type xcb:xkb:ModDef size
@@ -1347,7 +1342,6 @@
        '(name si type xcb:xkb:SymInterpret size
               (xcb:-fieldref 'nSI))
        :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (groupMaps :initarg :groupMaps :type xcb:-ignore)
    (groupMaps~ :initform
               '(name groupMaps type xcb:xkb:ModDef size
@@ -1691,31 +1685,26 @@
             '(name keymaps type xcb:xkb:Listing size
                    (xcb:-fieldref 'nKeymaps))
             :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (keycodes :initarg :keycodes :type xcb:-ignore)
    (keycodes~ :initform
              '(name keycodes type xcb:xkb:Listing size
                     (xcb:-fieldref 'nKeycodes))
              :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (types :initarg :types :type xcb:-ignore)
    (types~ :initform
           '(name types type xcb:xkb:Listing size
                  (xcb:-fieldref 'nTypes))
           :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (compatMaps :initarg :compatMaps :type xcb:-ignore)
    (compatMaps~ :initform
                '(name compatMaps type xcb:xkb:Listing size
                       (xcb:-fieldref 'nCompatMaps))
                :type xcb:-list)
-   (pad~4 :initform 4 :type xcb:-pad-align)
    (symbols :initarg :symbols :type xcb:-ignore)
    (symbols~ :initform
             '(name symbols type xcb:xkb:Listing size
                    (xcb:-fieldref 'nSymbols))
             :type xcb:-list)
-   (pad~5 :initform 4 :type xcb:-pad-align)
    (geometries :initarg :geometries :type xcb:-ignore)
    (geometries~ :initform
                '(name geometries type xcb:xkb:Listing size
@@ -1755,9 +1744,9 @@
              cases
              ((13 getmap-type typeDeviceID getmap-sequence getmap-length pad~1 
typeMinKeyCode typeMaxKeyCode present firstType nTypes totalTypes firstKeySym 
totalSyms nKeySyms firstKeyAction totalActions nKeyActions firstKeyBehavior 
nKeyBehaviors totalKeyBehaviors firstKeyExplicit nKeyExplicit totalKeyExplicit 
firstModMapKey nModMapKeys totalModMapKeys firstVModMapKey nVModMapKeys 
totalVModMapKeys pad~2 virtualMods map)
               (2 compatmap-type compatDeviceID compatmap-sequence 
compatmap-length groupsRtrn pad~7 firstSIRtrn nSIRtrn nTotalSI pad~8 si-rtrn 
group-rtrn)
-              (16 indicatormap-type indicatorDeviceID indicatormap-sequence 
indicatormap-length which realIndicators nIndicators pad~10 maps)
-              (160 keyname-type keyDeviceID keyname-sequence keyname-length 
which* keyMinKeyCode keyMaxKeyCode nTypes* groupNames virtualMods* firstKey 
nKeys indicators nRadioGroups nKeyAliases nKTLevels pad~11 valueList)
-              (64 geometry-type geometryDeviceID geometry-sequence 
geometry-length name geometryFound pad~13 widthMM heightMM nProperties nColors 
nShapes nSections nDoodads nKeyAliases* baseColorNdx labelColorNdx labelFont)))
+              (16 indicatormap-type indicatorDeviceID indicatormap-sequence 
indicatormap-length which realIndicators nIndicators pad~9 maps)
+              (160 keyname-type keyDeviceID keyname-sequence keyname-length 
which* keyMinKeyCode keyMaxKeyCode nTypes* groupNames virtualMods* firstKey 
nKeys indicators nRadioGroups nKeyAliases nKTLevels pad~10 valueList)
+              (64 geometry-type geometryDeviceID geometry-sequence 
geometry-length name geometryFound pad~12 widthMM heightMM nProperties nColors 
nShapes nSections nDoodads nKeyAliases* baseColorNdx labelColorNdx labelFont)))
            :type xcb:-switch)
    (getmap-type :initarg :getmap-type :type xcb:CARD8)
    (typeDeviceID :initarg :typeDeviceID :type xcb:CARD8)
@@ -1868,7 +1857,6 @@
             '(name si-rtrn type xcb:xkb:SymInterpret size
                    (xcb:-fieldref 'nSIRtrn))
             :type xcb:-list)
-   (pad~9 :initform 4 :type xcb:-pad-align)
    (group-rtrn :initarg :group-rtrn :type xcb:-ignore)
    (group-rtrn~ :initform
                '(name group-rtrn type xcb:xkb:ModDef size
@@ -1882,7 +1870,7 @@
    (which :initarg :which :type xcb:CARD32)
    (realIndicators :initarg :realIndicators :type xcb:CARD32)
    (nIndicators :initarg :nIndicators :type xcb:CARD8)
-   (pad~10 :initform 15 :type xcb:-pad)
+   (pad~9 :initform 15 :type xcb:-pad)
    (maps :initarg :maps :type xcb:-ignore)
    (maps~ :initform
          '(name maps type xcb:xkb:IndicatorMap size
@@ -1904,7 +1892,7 @@
    (nRadioGroups :initarg :nRadioGroups :type xcb:CARD8)
    (nKeyAliases :initarg :nKeyAliases :type xcb:CARD8)
    (nKTLevels :initarg :nKTLevels :type xcb:CARD16)
-   (pad~11 :initform 4 :type xcb:-pad)
+   (pad~10 :initform 4 :type xcb:-pad)
    (valueList :initform
              '(expression
                (xcb:-fieldref 'which)
@@ -1916,7 +1904,7 @@
                 (16 typesName)
                 (32 compatName)
                 (64 typeNames)
-                (128 nLevelsPerType pad~12 ktLevelNames)
+                (128 nLevelsPerType pad~11 ktLevelNames)
                 (256 indicatorNames)
                 (2048 virtualModNames)
                 (4096 groups)
@@ -1940,7 +1928,7 @@
                    '(name nLevelsPerType type xcb:CARD8 size
                           (xcb:-fieldref 'nTypes))
                    :type xcb:-list)
-   (pad~12 :initform 4 :type xcb:-pad-align)
+   (pad~11 :initform 4 :type xcb:-pad-align)
    (ktLevelNames :initarg :ktLevelNames :type xcb:-ignore)
    (ktLevelNames~ :initform
                  '(name ktLevelNames type xcb:ATOM size
@@ -1986,7 +1974,7 @@
    (geometry-length :initarg :geometry-length :type xcb:CARD32)
    (name :initarg :name :type xcb:ATOM)
    (geometryFound :initarg :geometryFound :type xcb:BOOL)
-   (pad~13 :initform 1 :type xcb:-pad)
+   (pad~12 :initform 1 :type xcb:-pad)
    (widthMM :initarg :widthMM :type xcb:CARD16)
    (heightMM :initarg :heightMM :type xcb:CARD16)
    (nProperties :initarg :nProperties :type xcb:CARD16)
@@ -2046,7 +2034,6 @@
                '(name btnActions type xcb:xkb:Action size
                       (xcb:-fieldref 'nBtnsRtrn))
                :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (leds :initarg :leds :type xcb:-ignore)
    (leds~ :initform
          '(name leds type xcb:xkb:DeviceLedInfo size
@@ -2066,7 +2053,6 @@
                '(name btnActions type xcb:xkb:Action size
                       (xcb:-fieldref 'nBtns))
                :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (leds :initarg :leds :type xcb:-ignore)
    (leds~ :initform
          '(name leds type xcb:xkb:DeviceLedInfo size
diff --git a/xcb-xprint.el b/xcb-xprint.el
index 94fbe86..bc77c6b 100644
--- a/xcb-xprint.el
+++ b/xcb-xprint.el
@@ -97,7 +97,6 @@
                  '(name printer-name type xcb:xprint:STRING8 size
                         (xcb:-fieldref 'printerNameLen))
                  :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (locale :initarg :locale :type xcb:-ignore)
    (locale~ :initform
            '(name locale type xcb:xprint:STRING8 size
@@ -131,7 +130,6 @@
                 '(name printerName type xcb:xprint:STRING8 size
                        (xcb:-fieldref 'printerNameLen))
                 :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (locale :initarg :locale :type xcb:-ignore)
    (locale~ :initform
            '(name locale type xcb:xprint:STRING8 size
@@ -200,13 +198,11 @@
          '(name data type xcb:BYTE size
                 (xcb:-fieldref 'len-data))
          :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (doc-format :initarg :doc-format :type xcb:-ignore)
    (doc-format~ :initform
                '(name doc-format type xcb:xprint:STRING8 size
                       (xcb:-fieldref 'len-fmt))
                :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (options :initarg :options :type xcb:-ignore)
    (options~ :initform
             '(name options type xcb:xprint:STRING8 size
diff --git a/xcb-xproto.el b/xcb-xproto.el
index 4cab4e6..1b6ddb2 100644
--- a/xcb-xproto.el
+++ b/xcb-xproto.el
@@ -260,7 +260,6 @@
                    '(name pixmap-formats type xcb:FORMAT size
                           (xcb:-fieldref 'pixmap-formats-len))
                    :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (roots :initarg :roots :type xcb:-ignore)
    (roots~ :initform
           '(name roots type xcb:SCREEN size
@@ -1627,7 +1626,6 @@
                '(name properties type xcb:FONTPROP size
                       (xcb:-fieldref 'properties-len))
                :type xcb:-list)
-   (pad~3 :initform 4 :type xcb:-pad-align)
    (char-infos :initarg :char-infos :type xcb:-ignore)
    (char-infos~ :initform
                '(name char-infos type xcb:CHARINFO size
@@ -1735,7 +1733,6 @@
                '(name properties type xcb:FONTPROP size
                       (xcb:-fieldref 'properties-len))
                :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (name :initarg :name :type xcb:-ignore)
    (name~ :initform
          '(name name type xcb:char size
@@ -2378,7 +2375,6 @@
            '(name pixels type xcb:CARD32 size
                   (xcb:-fieldref 'pixels-len))
            :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (masks :initarg :masks :type xcb:-ignore)
    (masks~ :initform
           '(name masks type xcb:CARD32 size
diff --git a/xcb-xv.el b/xcb-xv.el
index 1524745..e820718 100644
--- a/xcb-xv.el
+++ b/xcb-xv.el
@@ -128,13 +128,11 @@
             '(name pitches type xcb:CARD32 size
                    (xcb:-fieldref 'num-planes))
             :type xcb:-list)
-   (pad~0 :initform 4 :type xcb:-pad-align)
    (offsets :initarg :offsets :type xcb:-ignore)
    (offsets~ :initform
             '(name offsets type xcb:CARD32 size
                    (xcb:-fieldref 'num-planes))
             :type xcb:-list)
-   (pad~1 :initform 4 :type xcb:-pad-align)
    (data :initarg :data :type xcb:-ignore)
    (data~ :initform
          '(name data type xcb:CARD8 size
@@ -457,7 +455,6 @@
             '(name pitches type xcb:CARD32 size
                    (xcb:-fieldref 'num-planes))
             :type xcb:-list)
-   (pad~2 :initform 4 :type xcb:-pad-align)
    (offsets :initarg :offsets :type xcb:-ignore)
    (offsets~ :initform
             '(name offsets type xcb:CARD32 size



reply via email to

[Prev in Thread] Current Thread [Next in Thread]