summaryrefslogtreecommitdiffstats
path: root/src/_blueshift_randr.pyx
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-02-16 19:08:21 +0100
committerMattias Andrée <maandree@operamail.com>2014-02-16 19:08:21 +0100
commit3406cb26df17e183dfc3da2b9fe4a5b41575c40d (patch)
treebfb2c71f27469c5087902ea2a5ff03d8f3e16266 /src/_blueshift_randr.pyx
parentbeginning c binding (diff)
downloadblueshift-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.pyx33
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():