Skip to content

Commit

Permalink
Merge remote-tracking branch 'freedesktop/master'
Browse files Browse the repository at this point in the history
Conflicts:
	configure.ac
  • Loading branch information
tych0 committed Mar 25, 2012
2 parents 22fbc11 + 6beb9e9 commit 5097ed8
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 15 deletions.
6 changes: 6 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Release 1.3.1 (2012-03-23)
==========================
- Depends on xcb-proto 1.7.1
- Fix length field handling, again
- Pack requests using standard size and no alignment

Release 1.3 (2012-03-22)
========================
- Export API to other Python modules
Expand Down
26 changes: 11 additions & 15 deletions tools/py_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,16 +253,12 @@ def _py_get_length_field(expr):
For fields that follow a variable-length field, use the accessor.
Otherwise, just reference the structure field directly.
'''
if expr.lenfield_name != None:
# This would be nicer if Request had an is_request attribute...
try:
has_opcode = hasattr(expr.parent.parents, "opcode")
except AttributeError:
has_opcode = False
if has_opcode:
return expr.lenfield_name
else:
return 'self.%s' % expr.lenfield_name
if expr.lenfield_name is not None:
for grandparent in expr.parent.parents:
# This would be nicer if Request had an is_request attribute...
if hasattr(grandparent, "opcode"):
return expr.lenfield_name
return 'self.%s' % expr.lenfield_name
else:
return str(expr.nmemb)

Expand Down Expand Up @@ -480,24 +476,24 @@ def _py_request_helper(self, name, void, regular):

(format, size, list) = _py_flush_format()
if size > 0:
_py(' buf.write(pack(\'%s\', %s))', format, list)
_py(' buf.write(pack(\'=%s\', %s))', format, list)

if field.type.is_expr:
_py(' buf.write(pack(\'%s\', %s))', field.type.py_format_str, _py_get_expr(field.type.expr))
_py(' buf.write(pack(\'=%s\', %s))', field.type.py_format_str, _py_get_expr(field.type.expr))
elif field.type.is_pad:
_py(' buf.write(pack(\'%sx\'))', field.type.nmemb)
elif field.type.is_container:
_py(' for elt in xcb.Iterator(%s, %d, \'%s\', False):', _n(field.field_name), field.type.py_format_len, _n(field.field_name))
_py(' buf.write(pack(\'%s\', *elt))', field.type.py_format_str)
_py(' buf.write(pack(\'=%s\', *elt))', field.type.py_format_str)
elif field.type.is_list and field.type.member.is_simple:
_py(' buf.write(str(buffer(array(\'%s\', %s))))', field.type.member.py_format_str, _n(field.field_name))
else:
_py(' for elt in xcb.Iterator(%s, %d, \'%s\', True):', _n(field.field_name), field.type.member.py_format_len, _n(field.field_name))
_py(' buf.write(pack(\'%s\', *elt))', field.type.member.py_format_str)
_py(' buf.write(pack(\'=%s\', *elt))', field.type.member.py_format_str)

(format, size, list) = _py_flush_format()
if size > 0:
_py(' buf.write(pack(\'%s\', %s))', format, list)
_py(' buf.write(pack(\'=%s\', %s))', format, list)

_py(' return self.send_request(xcb.Request(buf.getvalue(), %s, %s, %s),', self.opcode, _b(void), _b(func_flags))
_py(' %s()%s', func_cookie, ')' if void else ',')
Expand Down

0 comments on commit 5097ed8

Please sign in to comment.