mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-protocol
synced 2025-12-29 17:07:13 +00:00
Simplify SpiceLineAttr by removing unsed stuff
Also in new protocol don't send style data if not needed.
This commit is contained in:
parent
68e29d0d19
commit
6d38c4817f
@ -62,7 +62,8 @@ def write_read_primitive(writer, start, container, name, scope):
|
||||
writer.error_check("pos + %s > message_end" % m.member_type.get_fixed_nw_size())
|
||||
|
||||
var = "%s__value" % (name)
|
||||
scope.variable_def(m.member_type.c_type(), var)
|
||||
if not scope.variable_defined(var):
|
||||
scope.variable_def(m.member_type.c_type(), var)
|
||||
writer.assign(var, "read_%s(pos)" % (m.member_type.primitive_type()))
|
||||
return var
|
||||
|
||||
@ -639,7 +640,9 @@ def write_switch_parser(writer, container, switch, dest, scope):
|
||||
elif t.is_pointer():
|
||||
write_parse_pointer(writer, t, False, m.has_attr("c_ptr"), dest2, m.name, block)
|
||||
elif t.is_primitive():
|
||||
if not m.has_attr("zero"):
|
||||
if m.has_attr("zero"):
|
||||
writer.statement("consume_%s(&in)" % (t.primitive_type()))
|
||||
else:
|
||||
writer.assign(dest2.get_ref(m.name), "consume_%s(&in)" % (t.primitive_type()))
|
||||
#TODO validate e.g. flags and enums
|
||||
elif t.is_array():
|
||||
@ -768,8 +771,8 @@ def write_member_parser(writer, container, member, dest, scope):
|
||||
write_parse_pointer(writer, t, member.has_end_attr(), member.has_attr("c_ptr"), dest, member.name, scope)
|
||||
elif t.is_primitive():
|
||||
if member.has_attr("zero"):
|
||||
pass
|
||||
if member.has_end_attr():
|
||||
writer.statement("consume_%s(&in)" % t.primitive_type())
|
||||
elif member.has_end_attr():
|
||||
writer.statement("*(%s *)end = consume_%s(&in)" % (t.c_type(), t.primitive_type()))
|
||||
writer.increment("end", t.sizeof())
|
||||
else:
|
||||
|
||||
@ -610,6 +610,12 @@ class Switch(Containee):
|
||||
def is_switch(self):
|
||||
return True
|
||||
|
||||
def lookup_case_member(self, name):
|
||||
for c in self.cases:
|
||||
if c.member.name == name:
|
||||
return c.member
|
||||
return None
|
||||
|
||||
def has_switch_member(self, member):
|
||||
for c in self.cases:
|
||||
if c.member == member:
|
||||
@ -767,7 +773,14 @@ class ContainerType(Type):
|
||||
return str(fixed)
|
||||
|
||||
def lookup_member(self, name):
|
||||
return self.members_by_name[name]
|
||||
if self.members_by_name.has_key(name):
|
||||
return self.members_by_name[name]
|
||||
for m in self.members:
|
||||
if m.is_switch():
|
||||
member = m.lookup_case_member(name)
|
||||
if member:
|
||||
return member
|
||||
raise Exception, "No member called %s found" % name
|
||||
|
||||
class StructType(ContainerType):
|
||||
def __init__(self, name, members, attribute_list):
|
||||
|
||||
28
spice.proto
28
spice.proto
@ -131,7 +131,7 @@ channel BaseChannel {
|
||||
uint32 what; /* error_code/warn_code/info_code */
|
||||
uint32 message_len;
|
||||
uint8 message[message_len] @end @nomarshal;
|
||||
uint8 zero @end @ctype(uint8_t) @zero @nomarshal;
|
||||
uint8 zero @end @ctype(uint8_t) @nomarshal;
|
||||
} notify;
|
||||
|
||||
client:
|
||||
@ -349,18 +349,6 @@ flags8 line_flags {
|
||||
START_WITH_GAP = 2,
|
||||
};
|
||||
|
||||
enum8 line_cap {
|
||||
ROUND,
|
||||
SQUARE,
|
||||
BUTT,
|
||||
};
|
||||
|
||||
enum8 line_join {
|
||||
ROUND,
|
||||
BEVEL,
|
||||
MITER,
|
||||
};
|
||||
|
||||
flags8 string_flags {
|
||||
RASTER_A1,
|
||||
RASTER_A4,
|
||||
@ -537,12 +525,14 @@ struct QMask {
|
||||
|
||||
struct LineAttr {
|
||||
line_flags flags;
|
||||
line_join join_style;
|
||||
line_cap end_style;
|
||||
uint8 style_nseg;
|
||||
fixed28_4 width;
|
||||
fixed28_4 miter_limit;
|
||||
fixed28_4 *style[style_nseg];
|
||||
switch (flags) {
|
||||
case STYLED:
|
||||
uint8 style_nseg;
|
||||
} u1 @anon;
|
||||
switch (flags) {
|
||||
case STYLED:
|
||||
fixed28_4 *style[style_nseg];
|
||||
} u2 @anon;
|
||||
};
|
||||
|
||||
struct RasterGlyphA1 {
|
||||
|
||||
10
spice1.proto
10
spice1.proto
@ -131,7 +131,7 @@ channel BaseChannel {
|
||||
uint32 what; /* error_code/warn_code/info_code */
|
||||
uint32 message_len;
|
||||
uint8 message[message_len] @end @nomarshal;
|
||||
uint8 zero @end @ctype(uint8_t) @zero @nomarshal;
|
||||
uint8 zero @end @ctype(uint8_t) @nomarshal;
|
||||
} notify;
|
||||
|
||||
client:
|
||||
@ -485,11 +485,11 @@ struct QMask {
|
||||
|
||||
struct LineAttr {
|
||||
line_flags flags;
|
||||
line_join join_style;
|
||||
line_cap end_style;
|
||||
line_join join_style @zero;
|
||||
line_cap end_style @zero;
|
||||
uint8 style_nseg;
|
||||
fixed28_4 width;
|
||||
fixed28_4 miter_limit;
|
||||
fixed28_4 width @zero;
|
||||
fixed28_4 miter_limit @zero;
|
||||
fixed28_4 *style[style_nseg];
|
||||
};
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user