gstbus.override: Allow using set_sync_handler with None as a parameter

This commit is contained in:
Edward Hervey 2009-02-22 20:08:54 +01:00
parent 51ac26b86c
commit 4fadf0700e

View File

@ -164,21 +164,27 @@ _wrap_gst_bus_set_sync_handler (PyGObject *self, PyObject *args)
PyErr_SetString(PyExc_TypeError, "Bus requires at least 1 arg"); PyErr_SetString(PyExc_TypeError, "Bus requires at least 1 arg");
return NULL; return NULL;
} }
callback = PySequence_GetItem(args, 0); callback = PySequence_GetItem(args, 0);
if (callback != Py_None) {
if (!PyCallable_Check(callback)) { if (!PyCallable_Check(callback)) {
PyErr_SetString(PyExc_TypeError, "callback is not callable"); PyErr_SetString(PyExc_TypeError, "callback is not callable");
return NULL; return NULL;
} }
cbargs = PySequence_GetSlice(args, 1, len); cbargs = PySequence_GetSlice(args, 1, len);
if (cbargs == NULL) if (cbargs == NULL)
return NULL; return NULL;
data = Py_BuildValue("(ON)", callback, cbargs); data = Py_BuildValue("(ON)", callback, cbargs);
if (data == NULL) if (data == NULL)
return NULL; return NULL;
gst_bus_set_sync_handler (GST_BUS (self->obj), gst_bus_set_sync_handler (GST_BUS (self->obj),
(GstBusSyncHandler) bus_sync_handler, (GstBusSyncHandler) bus_sync_handler,
data); data);
} else
gst_bus_set_sync_handler (GST_BUS (self->obj), NULL, NULL);
Py_INCREF(Py_None); Py_INCREF(Py_None);
return Py_None; return Py_None;
} }