summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorGreg Ward <gward@python.net>2003-05-26 22:47:30 (GMT)
committerGreg Ward <gward@python.net>2003-05-26 22:47:30 (GMT)
commitb804390ae386a5c8dbd3c107f0f22ab589d3563b (patch)
tree722678c7c4a74a5881a194a3873e792d4f903e95 /Modules
parent8d1f11b0ef7ec31db75a4e640e9dfd75fc4ee08d (diff)
downloadcpython-b804390ae386a5c8dbd3c107f0f22ab589d3563b.zip
cpython-b804390ae386a5c8dbd3c107f0f22ab589d3563b.tar.gz
cpython-b804390ae386a5c8dbd3c107f0f22ab589d3563b.tar.bz2
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()
Diffstat (limited to 'Modules')
-rw-r--r--Modules/ossaudiodev.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c
index 6196d36..139c4cf 100644
--- a/Modules/ossaudiodev.c
+++ b/Modules/ossaudiodev.c
@@ -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);