1import xcffib
2import struct
3import six
4MAJOR_VERSION = 1
5MINOR_VERSION = 0
6key = xcffib.ExtensionKey("Generic Event Extension")
7_events = {}
8_errors = {}
9class QueryVersionReply(xcffib.Reply):
10    def __init__(self, unpacker):
11        if isinstance(unpacker, xcffib.Protobj):
12            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
13        xcffib.Reply.__init__(self, unpacker)
14        base = unpacker.offset
15        self.major_version, self.minor_version = unpacker.unpack("xx2x4xHH20x")
16        self.bufsize = unpacker.offset - base
17class QueryVersionCookie(xcffib.Cookie):
18    reply_type = QueryVersionReply
19class geExtension(xcffib.Extension):
20    def QueryVersion(self, client_major_version, client_minor_version, is_checked=True):
21        buf = six.BytesIO()
22        buf.write(struct.pack("=xx2xHH", client_major_version, client_minor_version))
23        return self.send_request(0, buf, QueryVersionCookie, is_checked=is_checked)
24xcffib._add_ext(key, geExtension, _events, _errors)
25