From: Greg Ward Date: Mon, 26 May 2003 22:47:30 +0000 (+0000) Subject: Release the GIL in two more methods: X-Git-Tag: v2.3c1~603 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b804390ae386a5c8dbd3c107f0f22ab589d3563b;p=python 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() --- diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index 6196d36739..139c4cfa82 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);