From 0c08501ab8a7f4d8548f695479a3df6c39f4fe3dab3ac0333b4391184fa51f56 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 5 Mar 2018 14:14:18 +0000 Subject: [PATCH] - Update to version 1.13 * This release of xcb-proto brings support for buffer modifiers and multi-planar buffers through DRI3 v1.2 and Present v1.2, support for leasing KMS devices to clients via RandR 1.6, and also allows clients to send each other XInput2 events via support for the GenericEvent extension's SendExtension event. - supersedes U_xinput-typedef-for-event_type_base.patch, U_add-support-for-eventstruct.patch, U_SendExtensionEvent-uses-eventstruct.patch, U_python-whitespace.patch, U_python3-compat.patch OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xcb-proto?expand=0&rev=27 --- U_SendExtensionEvent-uses-eventstruct.patch | 100 ------ U_add-support-for-eventstruct.patch | 343 -------------------- U_python-whitespace.patch | 211 ------------ U_python3-compat.patch | 71 ---- U_xinput-typedef-for-event_type_base.patch | 49 --- xcb-proto-1.12.tar.bz2 | 3 - xcb-proto-1.13.tar.bz2 | 3 + xcb-proto.changes | 15 + xcb-proto.spec | 7 +- 9 files changed, 19 insertions(+), 783 deletions(-) delete mode 100644 U_SendExtensionEvent-uses-eventstruct.patch delete mode 100644 U_add-support-for-eventstruct.patch delete mode 100644 U_python-whitespace.patch delete mode 100644 U_python3-compat.patch delete mode 100644 U_xinput-typedef-for-event_type_base.patch delete mode 100644 xcb-proto-1.12.tar.bz2 create mode 100644 xcb-proto-1.13.tar.bz2 diff --git a/U_SendExtensionEvent-uses-eventstruct.patch b/U_SendExtensionEvent-uses-eventstruct.patch deleted file mode 100644 index eee8f6a..0000000 --- a/U_SendExtensionEvent-uses-eventstruct.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 97fbba25baf241cbcda882739db423b1d36e440a Mon Sep 17 00:00:00 2001 -From: Christian Linhart -Date: Wed, 25 Jan 2017 10:39:38 +0100 -Subject: [PATCH] SendExtensionEvent uses eventstruct - -Use the eventstruct element to define the SendExtensionEvent request -instead of using a byte-array. - -This has the advantage that the structure of the data to be sent -is now defined in the xml definition. -This can be used by generators to make sending events safer. -Such as avoiding type-casts in C. - -It can also be useful for protocol analyzers and tools like that -because the structure of the sent events is now defined in the xml-definition. - -Tested-by: Christian Linhart -Signed-off-by: Christian Linhart ---- - src/xinput.xml | 57 ++++++++++++++++++++++++++++++++++++++------------------- - 1 file changed, 38 insertions(+), 19 deletions(-) - -diff --git a/src/xinput.xml b/src/xinput.xml -index c0b497e..9a35e9d 100644 ---- a/src/xinput.xml -+++ b/src/xinput.xml -@@ -987,25 +987,8 @@ This affects the following: - - - -- -- -- -- -- -- -- -- -- -- -- -- num_events -- 32 -- -- -- -- num_classes -- -- -+ - - - -@@ -2642,6 +2625,42 @@ This affects the following: - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ num_events -+ -+ -+ num_classes -+ -+ -+ -+ - - - --- -2.13.6 - diff --git a/U_add-support-for-eventstruct.patch b/U_add-support-for-eventstruct.patch deleted file mode 100644 index a3a6a84..0000000 --- a/U_add-support-for-eventstruct.patch +++ /dev/null @@ -1,343 +0,0 @@ -From 4aa40fbd5e05833b72327ea37421b09dff246732 Mon Sep 17 00:00:00 2001 -From: Christian Linhart -Date: Wed, 25 Jan 2017 10:31:18 +0100 -Subject: [PATCH] add support for eventstruct - -eventstruct is a new xml element that allows to use events -as part of requests. - -This is, e.g., needed by the SendExtensionEvent request -of the XINPUT extension. - -Signed-off-by: Christian Linhart ---- - doc/xml-xcb.txt | 29 +++++++++++++++++++ - src/xcb.xsd | 17 +++++++++++ - xcbgen/matcher.py | 7 +++++ - xcbgen/state.py | 41 ++++++++++++++++++++++++++ - xcbgen/xtypes.py | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 181 insertions(+) - -diff --git a/doc/xml-xcb.txt b/doc/xml-xcb.txt -index 9cef1de..f5b9aed 100644 ---- a/doc/xml-xcb.txt -+++ b/doc/xml-xcb.txt -@@ -76,6 +76,12 @@ Top-Level Elements - the field and pad elements described in the section "Structure Contents - below". - -+event-type-selector list -+ -+ This element represents a data structure that is the wire-representation of -+ an event. The event can be any type that's selected by the -+ event-type-selector list. -+ - - - This element represents an identifier for a particular type of resource. -@@ -359,6 +365,29 @@ Expressions - This element represents the current list-element when used inside - a list-iteration expression such as . - -+ -+Event-Type-Selector List -+------------------------ -+ -+ The event-type-selector list selects a set of eventtypes. -+ It consists of any number of the following elements: -+ -+ -+ -+ The extension attribute selects events from the given extension. -+ -+ If the xge attribute is true, the event is an X Generic Event and -+ will be treated as such. -+ -+ opcode-min and opcode-max describe the minimum and maximum opcode -+ respectively. The opcode is the same number as the number-attribute -+ of an event definition. I.e. this is the offset from the event-base -+ to the actual number used on the wire. -+ -+ In the current implementation, only xge="false" is supported. -+ -+ - Documentation - ------------- - -diff --git a/src/xcb.xsd b/src/xcb.xsd -index f0c5f44..dc3d7cc 100644 ---- a/src/xcb.xsd -+++ b/src/xcb.xsd -@@ -240,6 +240,22 @@ authorization from the authors. - - - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -354,6 +370,7 @@ authorization from the authors. - - - -+ - - - -diff --git a/xcbgen/matcher.py b/xcbgen/matcher.py -index bfa315e..97a8b43 100644 ---- a/xcbgen/matcher.py -+++ b/xcbgen/matcher.py -@@ -57,6 +57,12 @@ def struct(node, module, namespace): - type = Struct(name, node) - module.add_type(id, namespace.ns, name, type) - -+def eventstruct(node, module, namespace): -+ id = node.get('name') -+ name = namespace.prefix + (id,) -+ type = EventStruct(name, node) -+ module.add_type(id, namespace.ns, name, type) -+ - def union(node, module, namespace): - id = node.get('name') - name = namespace.prefix + (id,) -@@ -103,6 +109,7 @@ funcs = {'import' : import_, - 'xidunion' : xidunion, - 'enum' : enum, - 'struct' : struct, -+ 'eventstruct' : eventstruct, - 'union' : union, - 'request' : request, - 'event' : event, -diff --git a/xcbgen/state.py b/xcbgen/state.py -index a6ad3a1..a8346bb 100644 ---- a/xcbgen/state.py -+++ b/xcbgen/state.py -@@ -32,6 +32,9 @@ class Namespace(object): - self.root = parse(filename).getroot() - self.header = self.root.get('header') - self.ns = self.header + ':' -+ -+ # Events -+ self.events = {} - - # Get root element attributes - if self.root.get('extension-xname', False): -@@ -46,6 +49,17 @@ class Namespace(object): - self.ext_name = '' - self.prefix = ('xcb',) - -+ def add_event(self, id, name, item): -+ self.events[id] = (name, item) -+ -+ def get_event_by_opcode(self, opcode, is_ge_event): -+ for id, (name, event) in self.events.items(): -+ if event.is_ge_event == is_ge_event: -+ opcode_specific_name = event.get_name_for_opcode( opcode ) -+ if opcode_specific_name is not None: -+ return (opcode_specific_name, event) -+ return None -+ - - class Module(object): - ''' -@@ -72,6 +86,11 @@ class Module(object): - self.errors = {} - self.all = [] - -+ # dict of namespaces by ext_name -+ self.namespaces = {} -+ # enter the main namespace here -+ self.namespaces[self.namespace.ext_name] = self.namespace -+ - # Register some common types - self.add_type('CARD8', '', ('uint8_t',), tcard8) - self.add_type('CARD16', '', ('uint16_t',), tcard16) -@@ -94,6 +113,7 @@ class Module(object): - - # Recursively resolve all types - def resolve(self): -+ self.add_events_to_namespaces() - for (name, item) in self.all: - self.pads = 0 - item.resolve(self) -@@ -112,6 +132,7 @@ class Module(object): - if self.import_level == 0: - self.direct_imports.append((name, namespace.header)) - self.imports.append((name, namespace.header)) -+ self.namespaces[namespace.ext_name] = namespace - - def has_import(self, name): - for (name_, header) in self.imports: -@@ -149,6 +170,9 @@ class Module(object): - def get_type_name(self, id): - return self.get_type_impl(id, 0) - -+ def get_namespace(self, ext_name): -+ return self.namespaces[ext_name] -+ - # Keeps track of request datatypes - def add_request(self, id, name, item): - if name[:-1] == self.namespace.prefix: -@@ -160,6 +184,23 @@ class Module(object): - if name[:-1] == self.namespace.prefix: - self.all.append((name, item)) - -+ -+ def add_events_to_namespaces(self): -+ # add to its namespace object -+ for id, (name,item) in self.events.items(): -+ if name[:-1] == ('xcb',): -+ # core event -+ namespace_name = '' -+ else: -+ # extension event -+ namespace_name = name[-2] -+ -+ namespace = self.namespaces[namespace_name] -+ -+ if namespace is not None: -+ namespace.add_event(id, name, item) -+ -+ - def get_event(self, id): - return self.events[id][1] - -diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py -index b83b119..c1f5986 100644 ---- a/xcbgen/xtypes.py -+++ b/xcbgen/xtypes.py -@@ -36,6 +36,8 @@ class Type(object): - self.is_reply = False - self.is_union = False - self.is_pad = False -+ self.is_eventstruct = False -+ self.is_event = False - self.is_switch = False - self.is_case_or_bitcase = False - self.is_bitcase = False -@@ -1164,6 +1166,82 @@ class Request(ComplexType): - out = __main__.output['request'] - - -+class EventStructAllowedRule: -+ -+ def __init__(self, parent, elt): -+ self.elt = elt -+ self.extension = elt.get('extension') -+ self.ge_events = elt.get('xge') == "true" -+ self.min_opcode = int( elt.get('opcode-min') ) -+ self.max_opcode = int( elt.get('opcode-max') ) -+ -+ def resolve(self, parent, module): -+ # get the namespace of the specified extension -+ extension_namespace = module.get_namespace( self.extension ) -+ if extension_namespace is None: -+ raise Exception( "EventStructAllowedRule.resolve: cannot find extension \"" + self.extension + "\"" ) -+ return -+ -+ # find and add the selected events -+ for opcode in range(self.min_opcode, self.max_opcode): -+ name_and_event = extension_namespace.get_event_by_opcode( opcode, self.ge_events ) -+ if name_and_event is None: -+ # could not find event -> error handling -+ if self.ge_events: -+ raise Exception("EventStructAllowedRule.resolve: cannot find xge-event with opcode " + str(opcode) + " in extension " + self.extension ) -+ else: -+ raise Exception("EventStructAllowedRule.resolve: cannot find oldstyle-event with opcode " + str(opcode) + " in extension " + self.extension ) -+ return -+ -+ ( name, event ) = name_and_event -+ # add event to EventStruct -+ parent.add_event( module, self.extension, opcode, name, event ) -+ -+ -+class EventStruct(Union): -+ ''' -+ Derived class representing an event-use-as-struct data type. -+ ''' -+ -+ def __init__(self, name, elt): -+ Union.__init__(self, name, elt) -+ self.is_eventstruct = True -+ self.events = [] -+ self.allowedRules = [] -+ self.contains_ge_events = False -+ for item in list(elt): -+ if item.tag == 'allowed': -+ allowedRule = EventStructAllowedRule(self, item) -+ self.allowedRules.append( allowedRule ) -+ if allowedRule.ge_events: -+ self.contains_ge_events = True -+ -+ out = __main__.output['eventstruct'] -+ -+ def resolve(self, module): -+ if self.resolved: -+ return -+ for allowedRule in self.allowedRules: -+ allowedRule.resolve(self, module) -+ Union.resolve(self,module) -+ self.resolved = True -+ -+ # add event. called by resolve -+ def add_event(self, module, extension, opcode, name, event_type ): -+ self.events.append( (extension, opcode, name, event_type) ) -+ # Add the field to ourself -+ event_type.make_member_of(module, self, name, name[-1], True, True, False) -+ # Recursively resolve the event (could be another structure, list) -+ event_type.resolve(module) -+ -+ def fixed_size(self): -+ is_fixed_size = True -+ for extension, opcode, name, event in self.events: -+ if not event.fixed_size(): -+ is_fixed_size = False -+ return is_fixed_size -+ -+ - class Event(ComplexType): - ''' - Derived class representing an event data type. -@@ -1183,6 +1261,8 @@ class Event(ComplexType): - - self.is_ge_event = bool(elt.get('xge')) - -+ self.is_event = True -+ - self.doc = None - for item in list(elt): - if item.tag == 'doc': -@@ -1193,6 +1273,13 @@ class Event(ComplexType): - if main: - self.name = name - -+ def get_name_for_opcode(self, opcode): -+ for name, my_opcode in self.opcodes.items(): -+ if int(my_opcode) == opcode: -+ return name -+ else: -+ return None -+ - def resolve(self, module): - def add_event_header(): - self.fields.append(Field(tcard8, tcard8.name, 'response_type', False, True, True)) --- -2.13.6 - diff --git a/U_python-whitespace.patch b/U_python-whitespace.patch deleted file mode 100644 index 32a17c3..0000000 --- a/U_python-whitespace.patch +++ /dev/null @@ -1,211 +0,0 @@ -From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001 -From: Thomas Klausner -Date: Thu, 19 May 2016 17:30:04 +0200 -Subject: Make whitespace use consistent. - -At least python-3.5.x complains about this forcefully. - -Signed-off-by: Thomas Klausner -Signed-off-by: Uli Schlachter ---- - xcbgen/align.py | 96 ++++++++++++++++++++++++++++----------------------------- - 1 file changed, 48 insertions(+), 48 deletions(-) - -diff --git a/xcbgen/align.py b/xcbgen/align.py -index 5e31838..d4c12ee 100644 ---- a/xcbgen/align.py -+++ b/xcbgen/align.py -@@ -16,12 +16,12 @@ class Alignment(object): - return self.align == other.align and self.offset == other.offset - - def __str__(self): -- return "(align=%d, offset=%d)" % (self.align, self.offset) -+ return "(align=%d, offset=%d)" % (self.align, self.offset) - - @staticmethod - def for_primitive_type(size): -- # compute the required start_alignment based on the size of the type -- if size % 8 == 0: -+ # compute the required start_alignment based on the size of the type -+ if size % 8 == 0: - # do 8-byte primitives require 8-byte alignment in X11? - return Alignment(8,0) - elif size % 4 == 0: -@@ -33,7 +33,7 @@ class Alignment(object): - - - def align_after_fixed_size(self, size): -- new_offset = (self.offset + size) % self.align -+ new_offset = (self.offset + size) % self.align - return Alignment(self.align, new_offset) - - -@@ -41,7 +41,7 @@ class Alignment(object): - ''' - Assuming the given external_align, checks whether - self is fulfilled for all cases. -- Returns True if yes, False otherwise. -+ Returns True if yes, False otherwise. - ''' - if self.align == 1 and self.offset == 0: - # alignment 1 with offset 0 is always fulfilled -@@ -55,9 +55,9 @@ class Alignment(object): - # the external align guarantees less alignment -> not guaranteed - return False - -- if external_align.align % self.align != 0: -+ if external_align.align % self.align != 0: - # the external align cannot be divided by our align -- # -> not guaranteed -+ # -> not guaranteed - # (this can only happen if there are alignments that are not - # a power of 2, which is highly discouraged. But better be - # safe and check for it) -@@ -72,7 +72,7 @@ class Alignment(object): - - def combine_with(self, other): - # returns the alignment that is guaranteed when -- # both, self or other, can happen -+ # both, self or other, can happen - new_align = gcd(self.align, other.align) - new_offset_candidate1 = self.offset % new_align - new_offset_candidate2 = other.offset % new_align -@@ -83,8 +83,8 @@ class Alignment(object): - new_align = gcd(new_align, offset_diff) - new_offset_candidate1 = self.offset % new_align - new_offset_candidate2 = other.offset % new_align -- assert new_offset_candidate1 == new_offset_candidate2 -- new_offset = new_offset_candidate1 -+ assert new_offset_candidate1 == new_offset_candidate2 -+ new_offset = new_offset_candidate1 - # return the result - return Alignment(new_align, new_offset) - -@@ -92,44 +92,44 @@ class Alignment(object): - class AlignmentLog(object): - - def __init__(self): -- self.ok_list = [] -- self.fail_list = [] -- self.verbosity = 1 -+ self.ok_list = [] -+ self.fail_list = [] -+ self.verbosity = 1 - - def __str__(self): -- result = "" -+ result = "" - -- # output the OK-list -- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: -- stacksize = len(callstack) -+ # output the OK-list -+ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: -+ stacksize = len(callstack) - indent = ' ' * stacksize -- if self.ok_callstack_is_relevant(callstack): -+ if self.ok_callstack_is_relevant(callstack): - if field_name is None or field_name == "": -- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" -- % (indent, str(type_obj), indent, str(align_before), str(align_after))) -- else: -- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" -- % (indent, str(field_name), str(type_obj), -- indent, str(align_before), str(align_after))) -+ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" -+ % (indent, str(type_obj), indent, str(align_before), str(align_after))) -+ else: -+ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" -+ % (indent, str(field_name), str(type_obj), -+ indent, str(align_before), str(align_after))) - if self.verbosity >= 1: -- result += self.callstack_to_str(indent, callstack) -+ result += self.callstack_to_str(indent, callstack) - -- # output the fail-list -- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: -- stacksize = len(callstack) -+ # output the fail-list -+ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: -+ stacksize = len(callstack) - indent = ' ' * stacksize -- if field_name is None or field_name == "": -- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" -- % (indent, str(align_before), indent, str(type_obj), indent, reason)) -- else: -- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" -- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) -+ if field_name is None or field_name == "": -+ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" -+ % (indent, str(align_before), indent, str(type_obj), indent, reason)) -+ else: -+ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" -+ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) - - if self.verbosity >= 1: -- result += self.callstack_to_str(indent, callstack) -+ result += self.callstack_to_str(indent, callstack) - - -- return result -+ return result - - - def callstack_to_str(self, indent, callstack): -@@ -137,41 +137,41 @@ class AlignmentLog(object): - for stack_elem in callstack: - result += "\t %s%s\n" % (indent, str(stack_elem)) - result += "\t%s]\n" % indent -- return result -+ return result - - - def ok_callstack_is_relevant(self, ok_callstack): - # determine whether an ok callstack is relevant for logging -- if self.verbosity >= 2: -- return True -+ if self.verbosity >= 2: -+ return True - - # empty callstacks are always relevant -- if len(ok_callstack) == 0: -+ if len(ok_callstack) == 0: - return True - -- # check whether the ok_callstack is a subset or equal to a fail_callstack -+ # check whether the ok_callstack is a subset or equal to a fail_callstack - for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list: - if len(ok_callstack) <= len(fail_callstack): - zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)]) -- is_subset = all([i == j for i, j in zipped]) -- if is_subset: -+ is_subset = all([i == j for i, j in zipped]) -+ if is_subset: - return True - - return False - - - def ok(self, align_before, field_name, type_obj, callstack, align_after): -- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) -+ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) - - def fail(self, align_before, field_name, type_obj, callstack, reason): -- self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) -+ self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) - - def append(self, other): -- self.ok_list.extend(other.ok_list) -- self.fail_list.extend(other.fail_list) -+ self.ok_list.extend(other.ok_list) -+ self.fail_list.extend(other.fail_list) - - def ok_count(self): -- return len(self.ok_list) -+ return len(self.ok_list) - - - --- -cgit v1.1 - diff --git a/U_python3-compat.patch b/U_python3-compat.patch deleted file mode 100644 index b070cad..0000000 --- a/U_python3-compat.patch +++ /dev/null @@ -1,71 +0,0 @@ -From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001 -From: Thomas Klausner -Date: Thu, 19 May 2016 17:30:05 +0200 -Subject: print() is a function and needs parentheses. - -Fixes build with python-3.x. - -Signed-off-by: Thomas Klausner -Signed-off-by: Uli Schlachter ---- - xcbgen/xtypes.py | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py -index c3b5758..b83b119 100644 ---- a/xcbgen/xtypes.py -+++ b/xcbgen/xtypes.py -@@ -501,7 +501,7 @@ class ComplexType(Type): - int(required_start_align_element.get('align', "4"), 0), - int(required_start_align_element.get('offset', "0"), 0)) - if verbose_align_log: -- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align) -+ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align)) - - def resolve(self, module): - if self.resolved: -@@ -592,7 +592,7 @@ class ComplexType(Type): - if verbose_align_log: - print ("calc_required_start_align: %s has start-align %s" - % (str(self), str(self.required_start_align))) -- print "Details:\n" + str(log) -+ print ("Details:\n" + str(log)) - if self.required_start_align.offset != 0: - print (("WARNING: %s\n\thas start-align with non-zero offset: %s" - + "\n\tsuggest to add explicit definition with:" -@@ -619,12 +619,12 @@ class ComplexType(Type): - for offset in range(0,align): - align_candidate = Alignment(align, offset) - if verbose_align_log: -- print "trying %s for %s" % (str(align_candidate), str(self)) -+ print ("trying %s for %s" % (str(align_candidate), str(self))) - my_log = AlignmentLog() - if self.is_possible_start_align(align_candidate, callstack, my_log): - log.append(my_log) - if verbose_align_log: -- print "found start-align %s for %s" % (str(align_candidate), str(self)) -+ print ("found start-align %s for %s" % (str(align_candidate), str(self))) - return align_candidate - else: - my_ok_count = my_log.ok_count() -@@ -641,7 +641,7 @@ class ComplexType(Type): - # none of the candidates applies - # this type has illegal internal aligns for all possible start_aligns - if verbose_align_log: -- print "didn't find start-align for %s" % str(self) -+ print ("didn't find start-align for %s" % str(self)) - log.append(best_log) - return None - -@@ -900,7 +900,7 @@ class SwitchType(ComplexType): - # aux function for unchecked_get_alignment_after - def get_align_for_selected_case_field(self, case_field, start_align, callstack, log): - if verbose_align_log: -- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)) -+ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))) - total_align = start_align - for field in self.bitcases: - my_callstack = callstack[:] --- -cgit v1.1 - diff --git a/U_xinput-typedef-for-event_type_base.patch b/U_xinput-typedef-for-event_type_base.patch deleted file mode 100644 index 1671ad6..0000000 --- a/U_xinput-typedef-for-event_type_base.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 89b022fdacfe7b39b2122c6ec1a4097767b1ee29 Mon Sep 17 00:00:00 2001 -From: Christian Linhart -Date: Fri, 20 Jan 2017 18:55:48 +0100 -Subject: [PATCH] xinput: typedef for event_type_base - -member event_type_base in struct InputClassInfo is a CARD8. -This patch replaces the type with the new typedef EventTypeBase -which is defined as a CARD8. - -This does not alter the ABI or API for that struct because -typedefs do not appear in the ABI. -And C handles typedefs as aliases. -So there'll be no API issues as well. - -The libxcb generator adds additional functions that implement -an iterator over this type. -This is harmless because adding code is ABI/API compatible. - -The purpose of this change is to add more semantic info to this -member variable of this struct. - -This helps with xcb-based generators or automatic code-checkers -and things like that. - -Signed-off-by: Christian Linhart ---- - src/xinput.xml | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/xinput.xml b/src/xinput.xml -index 94855ba..c0b497e 100644 ---- a/src/xinput.xml -+++ b/src/xinput.xml -@@ -226,10 +226,11 @@ This affects the following: - - - -+ - - - -- -+ - - - --- -2.13.6 - diff --git a/xcb-proto-1.12.tar.bz2 b/xcb-proto-1.12.tar.bz2 deleted file mode 100644 index 862a200..0000000 --- a/xcb-proto-1.12.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906 -size 153890 diff --git a/xcb-proto-1.13.tar.bz2 b/xcb-proto-1.13.tar.bz2 new file mode 100644 index 0000000..34c562c --- /dev/null +++ b/xcb-proto-1.13.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1 +size 151981 diff --git a/xcb-proto.changes b/xcb-proto.changes index 022421e..b885353 100644 --- a/xcb-proto.changes +++ b/xcb-proto.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Mon Mar 5 14:02:55 UTC 2018 - sndirsch@suse.com + +- Update to version 1.13 + * This release of xcb-proto brings support for buffer modifiers and + multi-planar buffers through DRI3 v1.2 and Present v1.2, support for + leasing KMS devices to clients via RandR 1.6, and also allows clients + to send each other XInput2 events via support for the GenericEvent + extension's SendExtension event. +- supersedes U_xinput-typedef-for-event_type_base.patch, + U_add-support-for-eventstruct.patch, + U_SendExtensionEvent-uses-eventstruct.patch, + U_python-whitespace.patch, + U_python3-compat.patch + ------------------------------------------------------------------- Wed Jan 17 13:05:11 UTC 2018 - tchvatal@suse.com diff --git a/xcb-proto.spec b/xcb-proto.spec index 553a1a5..6bf2a54 100644 --- a/xcb-proto.spec +++ b/xcb-proto.spec @@ -16,7 +16,7 @@ # -%define dirsuffix 1.12 +%define dirsuffix 1.13 %if 0%{?suse_version} >= 1500 %bcond_with python2 %else @@ -31,11 +31,6 @@ Group: Development/Libraries/X11 Url: http://xorg.freedesktop.org/ #Git-Web: https://cgit.freedesktop.org/xcb/proto Source: http://xorg.freedesktop.org/archive/individual/xcb/%{name}-%{dirsuffix}.tar.bz2 -Patch1: U_xinput-typedef-for-event_type_base.patch -Patch2: U_add-support-for-eventstruct.patch -Patch3: U_SendExtensionEvent-uses-eventstruct.patch -Patch4: U_python-whitespace.patch -Patch5: U_python3-compat.patch BuildRequires: autoconf >= 2.57 BuildRequires: automake BuildRequires: fdupes