[Xcb] [PATCH libxcb 1/1] do not serialize pads by default anymore

Christian Linhart chris at demorecorder.com
Sun Jan 17 21:56:39 PST 2016


Pads should not be serialized/deserialized to maintain
ABI compatibility when adding explicit align pads.

Therefore this pad switches off serialization of pads
unless it is enforced by serialize=true in the xml-definition
of that pad

Signed-off-by: Christian Linhart <chris at demorecorder.com>
---
 src/c_client.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/c_client.py b/src/c_client.py
index 3230a6f..57de3fb 100644
--- a/src/c_client.py
+++ b/src/c_client.py
@@ -2103,15 +2103,16 @@ def _c_complex(self, force_packed = False):
     def _c_complex_field(self, field, space=''):
         if (field.type.fixed_size() or self.is_union or
             # in case of switch with switch children, don't make the field a pointer
             # necessary for unserialize to work
             (self.is_switch and field.type.is_switch)):
             spacing = ' ' * (maxtypelen - len(field.c_field_type))
             _h('%s    %s%s %s%s;', space, field.c_field_type, spacing, field.c_field_name, field.c_subscript)
-        else:
+        elif (not field.type.is_pad) or field.type.serialize:
+            # serialize everything except pads (unless serialization of pads is enforced by serialize=true)
             spacing = ' ' * (maxtypelen - (len(field.c_field_type) + 1))
             _h('%s    %s%s *%s%s;', space, field.c_field_type, spacing, field.c_field_name, field.c_subscript)
 
     if not self.is_switch:
         for field in struct_fields:
             _c_complex_field(self, field)
     else:
-- 
2.1.4



More information about the Xcb mailing list