From d6470fb67940d00f993be980711549761713fbf7 Mon Sep 17 00:00:00 2001 From: Jan Peter Stotz <> Date: Sun, 19 Feb 2017 16:20:18 +0100 Subject: [PATCH] Mark call to lirc_client.lirc_nextcode(...) as nogil, otherwise calling it would block all threads in our python program --- lirc/lirc.pyx | 5 ++++- lirc/lirc_client.pxd | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lirc/lirc.pyx b/lirc/lirc.pyx index 5f78c09..abe4ae5 100644 --- a/lirc/lirc.pyx +++ b/lirc/lirc.pyx @@ -222,7 +222,10 @@ def nextcode(): _is_init_or_error() cdef char * code - if lirc_client.lirc_nextcode(&code) == -1: + cdef int return_value + with nogil: + return_value = lirc_client.lirc_nextcode(&code) + if return_value == -1: free(code) raise NextCodeError("There was an error reading the next code.") if code == NULL: diff --git a/lirc/lirc_client.pxd b/lirc/lirc_client.pxd index 0fe0f6e..211494c 100644 --- a/lirc/lirc_client.pxd +++ b/lirc/lirc_client.pxd @@ -12,5 +12,5 @@ cdef extern from "lirc/lirc_client.h": int lirc_readconfig(char *file, lirc_config **config, void * check_callback) void lirc_freeconfig(lirc_config *config) - int lirc_nextcode(char **code) + int lirc_nextcode(char **code) nogil int lirc_code2char(lirc_config *config, char *code, char **string)