summaryrefslogtreecommitdiff
path: root/demo
diff options
context:
space:
mode:
authormattip <matti.picus@gmail.com>2015-11-24 19:29:51 +0200
committermattip <matti.picus@gmail.com>2015-11-24 19:29:51 +0200
commit9b242870670f270fc10bcb6d139efab8d1f17c83 (patch)
tree4bb6fb3a70357a994f400a833262e27969a74a0c /demo
parent5b8fbe08b46bccce41cbfe9c32718e7823de7b34 (diff)
downloadcffi-9b242870670f270fc10bcb6d139efab8d1f17c83.tar.gz
fix one demo for verify -> set_source, compile
Diffstat (limited to 'demo')
-rw-r--r--demo/xclient.py64
1 files changed, 36 insertions, 28 deletions
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 <X11/Xlib.h>
-""", 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 <X11/Xlib.h>
+ """, 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()