diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-02-16 19:08:21 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-02-16 19:08:21 +0100 |
commit | 3406cb26df17e183dfc3da2b9fe4a5b41575c40d (patch) | |
tree | bfb2c71f27469c5087902ea2a5ff03d8f3e16266 /src/_blueshift_randr.pyx | |
parent | beginning c binding (diff) | |
download | blueshift-3406cb26df17e183dfc3da2b9fe4a5b41575c40d.tar.gz blueshift-3406cb26df17e183dfc3da2b9fe4a5b41575c40d.tar.bz2 blueshift-3406cb26df17e183dfc3da2b9fe4a5b41575c40d.tar.xz |
c binding
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | src/_blueshift_randr.pyx | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/src/_blueshift_randr.pyx b/src/_blueshift_randr.pyx index 44fd4b6..e022714 100644 --- a/src/_blueshift_randr.pyx +++ b/src/_blueshift_randr.pyx @@ -1,9 +1,13 @@ # -*- python -*- +cimport cython +from libc.stdlib cimport malloc, free + + cdef extern int blueshift_randr_open(int use_screen) cdef extern int blueshift_randr_apply(unsigned long long int use_crtcs, - unsigned short int r_curve[256], - unsigned short int g_curve[256], - unsigned short int b_curve[256]) + unsigned short int* r_curve, + unsigned short int* g_curve, + unsigned short int* b_curve) cdef extern void blueshift_randr_close() @@ -11,11 +15,24 @@ def randr_open(int use_screen): return blueshift_randr_open(use_screen) -def randr_apply(unsigned long long int use_crtcs, - unsigned short int r_curve[256], - unsigned short int g_curve[256], - unsigned short int b_curve[256]): - return blueshift_randr_apply(use_crtcs, r_curve, g_curve, b_curve) +def randr_apply(unsigned long long use_crtcs, r_curve, g_curve, b_curve): + cdef unsigned short int* r + cdef unsigned short int* g + cdef unsigned short int* b + r = <unsigned short int*>malloc(256 * 2) + g = <unsigned short int*>malloc(256 * 2) + b = <unsigned short int*>malloc(256 * 2) + if (r is NULL) or (g is NULL) or (b is NULL): + raise MemoryError() + for i in range(256): + r[i] = r_curve[i] + g[i] = g_curve[i] + b[i] = b_curve[i] + rc = blueshift_randr_apply(use_crtcs, r, g, b) + free(r) + free(g) + free(b) + return rc def randr_close(): |