import getopt
import sys
import re
+import math
_ns = None
go('func (c *Conn) %sRequest(', func_name)
go_complex_writer_arguments(param_fields, "Cookie {")
- fixedtotal = structsize(self.fields)
- if fixedtotal <= 32:
- go(' b := c.scratch[0:%d]', fixedtotal)
+ fixedlength = math.ceil(float(structsize(self.fields)) / float(4))
+ fixedsize = fixedlength * 4
+
+ if fixedsize <= 32:
+ go(' b := c.scratch[0:%d]', fixedsize)
else:
- go(' b := make([]byte, %d)', fixedtotal)
+ go(' b := make([]byte, %d)', fixedsize)
firstvar = 0
for field in wire_fields:
if not field.type.fixed_size():
if not firstvar:
firstvar = 1
- go(' n := %d', fixedtotal)
+ go(' n := %d', fixedsize)
go(' n += pad(%s * %d)', go_accessor_expr(field.type.expr, '', True), field.type.size)
if not firstvar:
- go(' put16(b[2:], %d)', fixedtotal / 4)
+ go(' put16(b[2:], %d)', fixedlength)
else:
go(' put16(b[2:], uint16(n / 4))')
go(' b[0] = %s', self.opcode)
'enum' : go_enum,
'struct' : go_struct,
'union' : go_union,
- 'request' : go_request,
+ 'request' : go_request,
'event' : go_event,
'error' : go_error
}
}
func (c *Conn) SetFontPath(FontQty uint16, Path []byte) {
- b := c.scratch[0:6]
- n := 6
+ b := c.scratch[0:8]
+ n := 8
n += pad(len(Path) * 1)
put16(b[2:], uint16(n/4))
b[0] = 51
}
func (c *Conn) ChangeKeyboardMapping(KeycodeCount byte, FirstKeycode byte, KeysymsPerKeycode byte, Keysyms []Keysym) {
- b := c.scratch[0:6]
- n := 6
+ b := c.scratch[0:8]
+ n := 8
n += pad((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)
put16(b[2:], uint16(n/4))
b[0] = 100
}
func (c *Conn) GetKeyboardMappingRequest(FirstKeycode byte, Count byte) Cookie {
- b := c.scratch[0:6]
- put16(b[2:], 1)
+ b := c.scratch[0:8]
+ put16(b[2:], 2)
b[0] = 101
b[4] = FirstKeycode
b[5] = Count
)
func (c *Conn) SetScreenSaver(Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) {
- b := c.scratch[0:10]
- put16(b[2:], 2)
+ b := c.scratch[0:12]
+ put16(b[2:], 3)
b[0] = 107
put16(b[4:], uint16(Timeout))
put16(b[6:], uint16(Interval))