From a7ab7860a57cdd41944355a400f62581f8b19d03 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 16 Feb 2014 19:19:36 +0100 Subject: use randr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/blueshift_randr.pyx | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/blueshift_randr.pyx (limited to 'src/blueshift_randr.pyx') diff --git a/src/blueshift_randr.pyx b/src/blueshift_randr.pyx new file mode 100644 index 0000000..e022714 --- /dev/null +++ b/src/blueshift_randr.pyx @@ -0,0 +1,40 @@ +# -*- 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, + unsigned short int* g_curve, + unsigned short int* b_curve) +cdef extern void blueshift_randr_close() + + +def randr_open(int use_screen): + return blueshift_randr_open(use_screen) + + +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 = malloc(256 * 2) + g = malloc(256 * 2) + b = 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(): + blueshift_randr_close() + -- cgit v1.2.3-70-g09d2