[Xcb] [PATCH proto 9/9] xv: struct "AttributeInfo": add explicit align pad
Christian Linhart
chris at demorecorder.com
Sun Sep 13 06:45:17 PDT 2015
The align pad is needed so that a in list of struct "AttributeInfo",
the 32-bit fields in subsequent "AttributeInfo" are aligned.
(all fields except "name" are 32-bit values)
The xv-protocol-spec does not contain the protocol encoding.
(it specifies the protocol on a higher level)
The X-Server uses function "WriteToClient" to write the list "name"
to the connection:
http://cgit.freedesktop.org/xorg/xserver/tree/Xext/xvdisp.c?id=xorg-server-1.17.99.901#n809
Function "WriteToClient" does 4-byte alignment padding:
http://cgit.freedesktop.org/xorg/xserver/tree/os/io.c?id=xorg-server-1.17.99.901#n804
BTW, With the current server impl, the alignpad is not strictly needed
because the field "size", which describes the length of list "name"
is set to a multiple of 4:
http://cgit.freedesktop.org/xorg/xserver/tree/Xext/xvdisp.c?id=xorg-server-1.17.99.901#n805
Signed-off-by: Christian Linhart <chris at demorecorder.com>
---
src/xv.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/xv.xml b/src/xv.xml
index d99711c..6db133f 100644
--- a/src/xv.xml
+++ b/src/xv.xml
@@ -143,14 +143,15 @@ <struct name="AttributeInfo">
<field type="CARD32" name="flags" mask="AttributeFlag" />
<field type="INT32" name="min" />
<field type="INT32" name="max" />
<field type="CARD32" name="size" />
<list type="char" name="name">
<fieldref>size</fieldref>
</list>
+ <pad align="4" />
</struct>
<struct name="ImageFormatInfo">
<field type="CARD32" name="id" />
<field type="CARD8" name="type" enum="ImageFormatInfoType" />
<field type="CARD8" name="byte_order" enum="ImageOrder" />
<pad bytes="2" />
--
2.1.4
More information about the Xcb
mailing list