mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
#6518: enable context manager protocol for ossaudiodev types.
This commit is contained in:
parent
1cae8b58eb
commit
1e908af335
4 changed files with 42 additions and 4 deletions
|
|
@ -469,6 +469,23 @@ oss_close(oss_audio_t *self, PyObject *unused)
|
|||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
oss_self(PyObject *self)
|
||||
{
|
||||
Py_INCREF(self);
|
||||
return self;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
oss_exit(PyObject *self, PyObject *unused)
|
||||
{
|
||||
PyObject *ret = PyObject_CallMethod(self, "close", NULL);
|
||||
if (!ret)
|
||||
return NULL;
|
||||
Py_DECREF(ret);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
oss_fileno(oss_audio_t *self, PyObject *unused)
|
||||
{
|
||||
|
|
@ -782,6 +799,10 @@ static PyMethodDef oss_methods[] = {
|
|||
/* Aliases for backwards compatibility */
|
||||
{ "flush", (PyCFunction)oss_sync, METH_VARARGS },
|
||||
|
||||
/* Support for the context manager protocol */
|
||||
{ "__enter__", oss_self, METH_NOARGS },
|
||||
{ "__exit__", oss_exit, METH_VARARGS },
|
||||
|
||||
{ NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
@ -790,6 +811,10 @@ static PyMethodDef oss_mixer_methods[] = {
|
|||
{ "close", (PyCFunction)oss_mixer_close, METH_NOARGS },
|
||||
{ "fileno", (PyCFunction)oss_mixer_fileno, METH_NOARGS },
|
||||
|
||||
/* Support for the context manager protocol */
|
||||
{ "__enter__", oss_self, METH_NOARGS },
|
||||
{ "__exit__", oss_exit, METH_VARARGS },
|
||||
|
||||
/* Simple ioctl wrappers */
|
||||
{ "controls", (PyCFunction)oss_mixer_controls, METH_VARARGS },
|
||||
{ "stereocontrols", (PyCFunction)oss_mixer_stereocontrols, METH_VARARGS},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue