Release the GIL in two more methods:
* sync(), because it waits for hardware buffers to flush, which can take several seconds depending on cirumstances (according to the OSS docs) * close(), because it does an implicit sync()
This commit is contained in:
parent
8d1f11b0ef
commit
b804390ae3
|
@ -353,7 +353,12 @@ oss_speed(oss_audio_t *self, PyObject *args)
|
|||
static PyObject *
|
||||
oss_sync(oss_audio_t *self, PyObject *args)
|
||||
{
|
||||
return _do_ioctl_0(self->fd, args, "sync", SNDCTL_DSP_SYNC);
|
||||
int rv;
|
||||
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
rv = _do_ioctl_0(self->fd, args, "sync", SNDCTL_DSP_SYNC);
|
||||
Py_END_ALLOW_THREADS
|
||||
return rv;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
|
@ -478,7 +483,9 @@ oss_close(oss_audio_t *self, PyObject *args)
|
|||
return NULL;
|
||||
|
||||
if (self->fd >= 0) {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
close(self->fd);
|
||||
Py_END_ALLOW_THREADS
|
||||
self->fd = -1;
|
||||
}
|
||||
Py_INCREF(Py_None);
|
||||
|
|
Loading…
Reference in New Issue