Fix GIL when waiting for tag

This commit is contained in:
Ondrej Mikle 2017-10-29 16:34:41 +01:00
parent 8a35b8b884
commit 1c8281f428
2 changed files with 6 additions and 1 deletions

View file

@ -46,7 +46,7 @@ reconnect_delay = 300
# Controls showing status of "OPEN/CLOSE" switch that is connected to some GPIO pin # Controls showing status of "OPEN/CLOSE" switch that is connected to some GPIO pin
# Changes topic of connected IRC channels if IRC is enabled # Changes topic of connected IRC channels if IRC is enabled
# There is no point in enabling this if you disabled IRC # There is no point in enabling this if you disabled IRC
# Not yet usable - do not use because of GIL and python-irc not retrieving topic from channel # Still has one bug - python-irc won't retrieve properly topic
# enabled - True/False # enabled - True/False
# status_file - file in sysfs that contains 1 or 0 defining the state of button # status_file - file in sysfs that contains 1 or 0 defining the state of button
# open_value - which value in status_file respresents the switch being in "OPEN" position, 1 character # open_value - which value in status_file respresents the switch being in "OPEN" position, 1 character

View file

@ -2,6 +2,8 @@
#include <cassert> #include <cassert>
#include <memory> #include <memory>
#include <Python.h>
#include <nfc/nfc.h> #include <nfc/nfc.h>
#include <nfc/nfc-types.h> #include <nfc/nfc-types.h>
#include <freefare.h> #include <freefare.h>
@ -102,7 +104,10 @@ std::string NFCDevice::scanUID() throw(NFCError)
throw NFCError("NFC device not opened"); throw NFCError("NFC device not opened");
} }
Py_BEGIN_ALLOW_THREADS
res = nfc_initiator_poll_target(_nfcDevice, _modulations, _modulationsLen, pollNr, pollPeriod, &nt); res = nfc_initiator_poll_target(_nfcDevice, _modulations, _modulationsLen, pollNr, pollPeriod, &nt);
Py_END_ALLOW_THREADS
if (res < 0) { if (res < 0) {
throw NFCError("NFC polling error"); throw NFCError("NFC polling error");
} }