Fix Issue #21: automatic calculation of alignment padding after lists

This commit is contained in:
aarzilli
2014-05-02 15:09:23 +02:00
committed by Přemysl Janouch
parent 1f8bd79abe
commit a548d9d0f7
30 changed files with 630 additions and 474 deletions

View File

@@ -90,7 +90,7 @@ func (v DrmClipRect) Bytes() []byte {
xgb.Put16(buf[b:], uint16(v.X3))
b += 2
return buf
return buf[:b]
}
// DrmClipRectListBytes writes a list of DrmClipRect values to a byte slice.
@@ -776,7 +776,6 @@ func getDeviceInfoReply(buf []byte) *GetDeviceInfoReply {
v.DevicePrivate[i] = xgb.Get32(buf[b:])
b += 4
}
b = xgb.Pad(b)
return v
}
@@ -846,7 +845,8 @@ type GetDrawableInfoReply struct {
BackY int16
NumBackClipRects uint32
ClipRects []DrmClipRect // size: xgb.Pad((int(NumClipRects) * 8))
BackClipRects []DrmClipRect // size: xgb.Pad((int(NumBackClipRects) * 8))
// alignment gap to multiple of 4
BackClipRects []DrmClipRect // size: xgb.Pad((int(NumBackClipRects) * 8))
}
// Reply blocks and returns the reply data for a GetDrawableInfo request.
@@ -907,6 +907,8 @@ func getDrawableInfoReply(buf []byte) *GetDrawableInfoReply {
v.ClipRects = make([]DrmClipRect, v.NumClipRects)
b += DrmClipRectReadList(buf[b:], v.ClipRects)
b = (b + 3) & ^3 // alignment gap
v.BackClipRects = make([]DrmClipRect, v.NumBackClipRects)
b += DrmClipRectReadList(buf[b:], v.BackClipRects)