xcffib 1.2.0 → 1.3.0
raw patch · 5 files changed
+127/−7 lines, 5 filesdep ~xcb-typesPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: xcb-types
API changes (from Hackage documentation)
Files
- generator/Data/XCB/Python/Parse.hs +4/−3
- test/GeneratorTests.hs +1/−0
- test/generator/randr.py +65/−0
- test/generator/randr.xml +53/−0
- xcffib.cabal +4/−4
generator/Data/XCB/Python/Parse.hs view
@@ -290,7 +290,8 @@ -> Either (Maybe String, String) (String, Either (Expr (), Expr ()) ([(Expr (), [GenStructElem Type])]), Maybe Int)-structElemToPyUnpack _ _ _ (Pad i) = Left (Nothing, mkPad i)+structElemToPyUnpack _ _ _ (Pad PadBytes i) = Left (Nothing, mkPad i)+structElemToPyUnpack _ _ _ (Pad PadAlignment _) = Left (Nothing, "") -- XXX: This is a cheap hack for noop, we should really do better. structElemToPyUnpack _ _ _ (Doc _ _ _) = Left (Nothing, "")@@ -357,7 +358,7 @@ -> Either (Maybe String, String) [(String, Either (Maybe (Expr ())) [(Expr (), [GenStructElem Type])] )]-structElemToPyPack _ _ _ (Pad i) = Left (Nothing, mkPad i)+structElemToPyPack _ _ _ (Pad _ i) = Left (Nothing, mkPad i) -- TODO: implement these? structElemToPyPack _ _ _ (Doc _ _ _) = Left (Nothing, "") structElemToPyPack _ _ _ (Fd _) = Left (Nothing, "")@@ -654,7 +655,7 @@ if null names then [] else [Decorated [classmethod] synthetic ()] where getName :: GenStructElem Type -> Maybe String- getName (Pad _) = Nothing+ getName (Pad _ _) = Nothing getName (X.List n _ _ _) = Just n getName (SField n _ _ _) = Just n getName (ExprField n _ _) = Just n
test/GeneratorTests.hs view
@@ -41,6 +41,7 @@ , "render_1.7" , "xproto_1.7" , "render"+ , "randr" , "eventstruct" ]
+ test/generator/randr.py view
@@ -0,0 +1,65 @@+import xcffib+import struct+import io+MAJOR_VERSION = 1+MINOR_VERSION = 6+key = xcffib.ExtensionKey("RANDR")+_events = {}+_errors = {}+class TRANSFORM(xcffib.Struct):+ xge = False+ def __init__(self, unpacker):+ if isinstance(unpacker, xcffib.Protobj):+ unpacker = xcffib.MemoryUnpacker(unpacker.pack())+ xcffib.Struct.__init__(self, unpacker)+ base = unpacker.offset+ self.matrix11, self.matrix12, self.matrix13, self.matrix21, self.matrix22, self.matrix23, self.matrix31, self.matrix32, self.matrix33 = unpacker.unpack("iiiiiiiii")+ self.bufsize = unpacker.offset - base+ def pack(self):+ buf = io.BytesIO()+ buf.write(struct.pack("=iiiiiiiii", self.matrix11, self.matrix12, self.matrix13, self.matrix21, self.matrix22, self.matrix23, self.matrix31, self.matrix32, self.matrix33))+ return buf.getvalue()+ fixed_size = 36+ @classmethod+ def synthetic(cls, matrix11, matrix12, matrix13, matrix21, matrix22, matrix23, matrix31, matrix32, matrix33):+ self = cls.__new__(cls)+ self.matrix11 = matrix11+ self.matrix12 = matrix12+ self.matrix13 = matrix13+ self.matrix21 = matrix21+ self.matrix22 = matrix22+ self.matrix23 = matrix23+ self.matrix31 = matrix31+ self.matrix32 = matrix32+ self.matrix33 = matrix33+ return self+class GetCrtcTransformReply(xcffib.Reply):+ xge = False+ def __init__(self, unpacker):+ if isinstance(unpacker, xcffib.Protobj):+ unpacker = xcffib.MemoryUnpacker(unpacker.pack())+ xcffib.Reply.__init__(self, unpacker)+ base = unpacker.offset+ unpacker.unpack("xx2x4x")+ self.pending_transform = TRANSFORM(unpacker)+ self.has_transforms, = unpacker.unpack("B3x")+ unpacker.pad(TRANSFORM)+ self.current_transform = TRANSFORM(unpacker)+ self.pending_len, self.pending_nparams, self.current_len, self.current_nparams = unpacker.unpack("4xHHHH")+ unpacker.pad("c")+ self.pending_filter_name = xcffib.List(unpacker, "c", self.pending_len)+ unpacker.pad("i")+ self.pending_params = xcffib.List(unpacker, "i", self.pending_nparams)+ unpacker.pad("c")+ self.current_filter_name = xcffib.List(unpacker, "c", self.current_len)+ unpacker.pad("i")+ self.current_params = xcffib.List(unpacker, "i", self.current_nparams)+ self.bufsize = unpacker.offset - base+class GetCrtcTransformCookie(xcffib.Cookie):+ reply_type = GetCrtcTransformReply+class randrExtension(xcffib.Extension):+ def GetCrtcTransform(self, crtc, is_checked=True):+ buf = io.BytesIO()+ buf.write(struct.pack("=xx2xI", crtc))+ return self.send_request(27, buf, GetCrtcTransformCookie, is_checked=is_checked)+xcffib._add_ext(key, randrExtension, _events, _errors)
+ test/generator/randr.xml view
@@ -0,0 +1,53 @@+<xcb header="randr" extension-xname="RANDR" extension-name="RandR"+ major-version="1" minor-version="6">++ <typedef oldname="INT32" newname="FIXED" />++ <struct name="TRANSFORM">+ <field type="FIXED" name="matrix11" />+ <field type="FIXED" name="matrix12" />+ <field type="FIXED" name="matrix13" />+ <field type="FIXED" name="matrix21" />+ <field type="FIXED" name="matrix22" />+ <field type="FIXED" name="matrix23" />+ <field type="FIXED" name="matrix31" />+ <field type="FIXED" name="matrix32" />+ <field type="FIXED" name="matrix33" />+ </struct>++ <xidtype name="MODE" />+ <xidtype name="CRTC" />+ <xidtype name="OUTPUT" />+ <xidtype name="PROVIDER" />+ <xidtype name="LEASE" />++ <request name="GetCrtcTransform" opcode="27">+ <field type="CRTC" name="crtc" />+ <reply>+ <pad bytes="1" />+ <field type="TRANSFORM" name="pending_transform" />+ <field type="BOOL" name="has_transforms" />+ <pad bytes="3" />+ <field type="TRANSFORM" name="current_transform" />+ <pad bytes="4" />+ <field type="CARD16" name="pending_len" />+ <field type="CARD16" name="pending_nparams" />+ <field type="CARD16" name="current_len" />+ <field type="CARD16" name="current_nparams" />+ <list type="char" name="pending_filter_name" >+ <fieldref>pending_len</fieldref>+ </list>+ <pad align="4" />+ <list type="FIXED" name="pending_params" >+ <fieldref>pending_nparams</fieldref>+ </list>+ <list type="char" name="current_filter_name" >+ <fieldref>current_len</fieldref>+ </list>+ <pad align="4" />+ <list type="FIXED" name="current_params" >+ <fieldref>current_nparams</fieldref>+ </list>+ </reply>+ </request>+</xcb>
xcffib.cabal view
@@ -1,5 +1,5 @@ name: xcffib-version: 1.2.0+version: 1.3.0 synopsis: A cffi-based python binding for X homepage: http://github.com/tych0/xcffib license: OtherLicense@@ -25,7 +25,7 @@ library build-depends: base ==4.*,- xcb-types >= 0.12.0,+ xcb-types >= 0.13.0, language-python >= 0.5.6, filepath, filemanip,@@ -48,7 +48,7 @@ xcffib, language-python >= 0.5.6, split,- xcb-types >= 0.12.0,+ xcb-types >= 0.13.0, optparse-applicative >= 0.13, filepath, filemanip,@@ -83,7 +83,7 @@ type: exitcode-stdio-1.0 build-depends: base ==4.*, xcffib,- xcb-types >= 0.12.0,+ xcb-types >= 0.13.0, language-python >= 0.5.6, HUnit, test-framework,