From 9b242870670f270fc10bcb6d139efab8d1f17c83 Mon Sep 17 00:00:00 2001 From: mattip Date: Tue, 24 Nov 2015 19:29:51 +0200 Subject: fix one demo for verify -> set_source, compile --- demo/xclient.py | 64 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 28 deletions(-) (limited to 'demo') diff --git a/demo/xclient.py b/demo/xclient.py index f511d33..0d66d8e 100644 --- a/demo/xclient.py +++ b/demo/xclient.py @@ -1,40 +1,48 @@ -from cffi import FFI - -ffi = FFI() -ffi.cdef(""" - -typedef ... Display; -typedef struct { ...; } Window; - -typedef struct { int type; ...; } XEvent; - -Display *XOpenDisplay(char *display_name); -Window DefaultRootWindow(Display *display); -int XMapRaised(Display *display, Window w); -Window XCreateSimpleWindow(Display *display, Window parent, int x, int y, - unsigned int width, unsigned int height, - unsigned int border_width, unsigned long border, - unsigned long background); -int XNextEvent(Display *display, XEvent *event_return); -""") -lib = ffi.verify(""" -#include -""", libraries=['X11']) - -globals().update(lib.__dict__) +import sys +sys.path.append('.') +try: + import _xclient +except ImportError: + from cffi import FFI + _ffi = FFI() + _ffi.cdef(""" + + typedef ... Display; + typedef struct { ...; } Window; + + typedef struct { int type; ...; } XEvent; + + Display *XOpenDisplay(char *display_name); + Window DefaultRootWindow(Display *display); + int XMapRaised(Display *display, Window w); + Window XCreateSimpleWindow(Display *display, Window parent, int x, int y, + unsigned int width, unsigned int height, + unsigned int border_width, unsigned long border, + unsigned long background); + int XNextEvent(Display *display, XEvent *event_return); + """) + + _ffi.set_source('_xclient', """ + #include + """, libraries=['X11']) + _ffi.compile() + import _xclient + +ffi = _xclient.ffi +lib = _xclient.lib class XError(Exception): pass def main(): - display = XOpenDisplay(ffi.NULL) + display = lib.XOpenDisplay(ffi.NULL) if display == ffi.NULL: raise XError("cannot open display") - w = XCreateSimpleWindow(display, DefaultRootWindow(display), + w = lib.XCreateSimpleWindow(display, lib.DefaultRootWindow(display), 10, 10, 500, 350, 0, 0, 0) - XMapRaised(display, w) + lib.XMapRaised(display, w) event = ffi.new("XEvent *") - XNextEvent(display, event) + lib.XNextEvent(display, event) if __name__ == '__main__': main() -- cgit v1.2.1