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)