mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
gst/gst.override: Apply patch from Brian Warner to throw a link error when element and pad linking fails.
Original commit message from CVS: * gst/gst.override: Apply patch from Brian Warner to throw a link error when element and pad linking fails.
This commit is contained in:
parent
ca5445fcbe
commit
ebae649260
3 changed files with 191 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2004-11-29 Johan Dahlin <johan@gnome.org>
|
||||||
|
|
||||||
|
* gst/gstmodule.c:
|
||||||
|
* gst/gst.override: Apply patch from Brian Warner to throw a link
|
||||||
|
error when element and pad linking fails.
|
||||||
|
|
||||||
2004-11-27 Martin Soto <martinsoto@users.sourceforge.net>
|
2004-11-27 Martin Soto <martinsoto@users.sourceforge.net>
|
||||||
|
|
||||||
* gst/gst.override (_wrap_gst_event_new_any)
|
* gst/gst.override (_wrap_gst_event_new_any)
|
||||||
|
|
180
gst/gst.override
180
gst/gst.override
|
@ -36,6 +36,7 @@ headers
|
||||||
#include <gst/gsttaginterface.h>
|
#include <gst/gsttaginterface.h>
|
||||||
|
|
||||||
extern gboolean pygst_data_from_pyobject (PyObject *object, GstData **data);
|
extern gboolean pygst_data_from_pyobject (PyObject *object, GstData **data);
|
||||||
|
PyObject *PyGstExc_LinkError = NULL;
|
||||||
|
|
||||||
GSList *mainloops = NULL;
|
GSList *mainloops = NULL;
|
||||||
void
|
void
|
||||||
|
@ -312,8 +313,12 @@ _wrap_gst_element_link_many(PyObject *self, PyObject *args)
|
||||||
i = 2;
|
i = 2;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
if (!gst_element_link(GST_ELEMENT(element->obj), GST_ELEMENT(element2->obj)))
|
if (!gst_element_link(GST_ELEMENT(element->obj),
|
||||||
return PyInt_FromLong(0);
|
GST_ELEMENT(element2->obj)))
|
||||||
|
{
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (i >= len)
|
if (i >= len)
|
||||||
break;
|
break;
|
||||||
|
@ -326,6 +331,122 @@ _wrap_gst_element_link_many(PyObject *self, PyObject *args)
|
||||||
|
|
||||||
return PyInt_FromLong(1);
|
return PyInt_FromLong(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
%%
|
||||||
|
override gst_element_link kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_element_link(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "dest", NULL };
|
||||||
|
PyGObject *dest;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:GstElement.link",
|
||||||
|
kwlist, &PyGstElement_Type, &dest))
|
||||||
|
return NULL;
|
||||||
|
ret = gst_element_link(GST_ELEMENT(self->obj), GST_ELEMENT(dest->obj));
|
||||||
|
if (!ret) {
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return PyBool_FromLong(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
%%
|
||||||
|
override gst_element_link_filtered kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_element_link_filtered(PyGObject *self, PyObject *args,
|
||||||
|
PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "dest", "filtercaps", NULL };
|
||||||
|
PyGObject *dest;
|
||||||
|
PyObject *py_filtercaps;
|
||||||
|
int ret;
|
||||||
|
GstCaps *filtercaps = NULL;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
||||||
|
"O!O:GstElement.link_filtered",
|
||||||
|
kwlist, &PyGstElement_Type,
|
||||||
|
&dest, &py_filtercaps))
|
||||||
|
return NULL;
|
||||||
|
if (pyg_boxed_check(py_filtercaps, GST_TYPE_CAPS))
|
||||||
|
filtercaps = pyg_boxed_get(py_filtercaps, GstCaps);
|
||||||
|
else {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "filtercaps should be a GstCaps");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
ret = gst_element_link_filtered(GST_ELEMENT(self->obj),
|
||||||
|
GST_ELEMENT(dest->obj),
|
||||||
|
filtercaps);
|
||||||
|
if (!ret) {
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return PyBool_FromLong(ret);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
%%
|
||||||
|
override gst_element_link_pads kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_element_link_pads(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "srcpadname", "dest", "destpadname", NULL };
|
||||||
|
char *srcpadname, *destpadname;
|
||||||
|
PyGObject *dest;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
||||||
|
"sO!s:GstElement.link_pads", kwlist,
|
||||||
|
&srcpadname, &PyGstElement_Type, &dest,
|
||||||
|
&destpadname))
|
||||||
|
return NULL;
|
||||||
|
ret = gst_element_link_pads(GST_ELEMENT(self->obj), srcpadname,
|
||||||
|
GST_ELEMENT(dest->obj), destpadname);
|
||||||
|
if (!ret) {
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return PyBool_FromLong(ret);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
%%
|
||||||
|
override gst_element_link_pads_filtered kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_element_link_pads_filtered(PyGObject *self, PyObject *args,
|
||||||
|
PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "srcpadname", "dest", "destpadname",
|
||||||
|
"filtercaps", NULL };
|
||||||
|
char *srcpadname, *destpadname;
|
||||||
|
PyGObject *dest;
|
||||||
|
int ret;
|
||||||
|
PyObject *py_filtercaps;
|
||||||
|
GstCaps *filtercaps = NULL;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
||||||
|
"sO!sO:GstElement.link_pads_filtered",
|
||||||
|
kwlist, &srcpadname, &PyGstElement_Type,
|
||||||
|
&dest, &destpadname, &py_filtercaps))
|
||||||
|
return NULL;
|
||||||
|
if (pyg_boxed_check(py_filtercaps, GST_TYPE_CAPS))
|
||||||
|
filtercaps = pyg_boxed_get(py_filtercaps, GstCaps);
|
||||||
|
else {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "filtercaps should be a GstCaps");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
ret = gst_element_link_pads_filtered(GST_ELEMENT(self->obj), srcpadname,
|
||||||
|
GST_ELEMENT(dest->obj), destpadname,
|
||||||
|
filtercaps);
|
||||||
|
if (!ret) {
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return PyBool_FromLong(ret);
|
||||||
|
}
|
||||||
|
|
||||||
%%
|
%%
|
||||||
override gst_element_unlink_many args
|
override gst_element_unlink_many args
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
@ -371,8 +492,61 @@ _wrap_gst_element_unlink_many(PyObject *self, PyObject *args)
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%
|
||||||
override GstPad.get_negotiated_caps
|
override gst_pad_link kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_pad_link(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "sinkpad", NULL };
|
||||||
|
PyGObject *sinkpad;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:GstPad.link", kwlist,
|
||||||
|
&PyGstPad_Type, &sinkpad))
|
||||||
|
return NULL;
|
||||||
|
ret = gst_pad_link(GST_PAD(self->obj), GST_PAD(sinkpad->obj));
|
||||||
|
if (!ret) {
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return PyBool_FromLong(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
%%
|
||||||
|
override gst_pad_link_filtered kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_pad_link_filtered(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "sinkpad", "filtercaps", NULL };
|
||||||
|
PyGObject *sinkpad;
|
||||||
|
PyObject *py_filtercaps;
|
||||||
|
int ret;
|
||||||
|
GstCaps *filtercaps = NULL;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O:GstPad.link_filtered",
|
||||||
|
kwlist, &PyGstPad_Type, &sinkpad,
|
||||||
|
&py_filtercaps))
|
||||||
|
return NULL;
|
||||||
|
if (pyg_boxed_check(py_filtercaps, GST_TYPE_CAPS))
|
||||||
|
filtercaps = pyg_boxed_get(py_filtercaps, GstCaps);
|
||||||
|
else {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "filtercaps should be a GstCaps");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
ret = gst_pad_link_filtered(GST_PAD(self->obj),
|
||||||
|
GST_PAD(sinkpad->obj),
|
||||||
|
filtercaps);
|
||||||
|
if (!ret) {
|
||||||
|
PyErr_SetString(PyGstExc_LinkError, "link failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return PyBool_FromLong(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
%%
|
||||||
|
override gst_pad_get_negotiated_caps
|
||||||
static PyObject *
|
static PyObject *
|
||||||
_wrap_gst_pad_get_negotiated_caps(PyGObject *self)
|
_wrap_gst_pad_get_negotiated_caps(PyGObject *self)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,7 @@ void pygst_add_constants(PyObject *module, const gchar *strip_prefix);
|
||||||
extern PyMethodDef pygst_functions[];
|
extern PyMethodDef pygst_functions[];
|
||||||
extern GSList *mainloops;
|
extern GSList *mainloops;
|
||||||
extern void _pygst_main_quit(void);
|
extern void _pygst_main_quit(void);
|
||||||
|
extern PyObject *PyGstExc_LinkError;
|
||||||
|
|
||||||
|
|
||||||
/* This is a timeout that gets added to the mainloop to handle SIGINT (Ctrl-C)
|
/* This is a timeout that gets added to the mainloop to handle SIGINT (Ctrl-C)
|
||||||
|
@ -133,7 +134,13 @@ init_gst (void)
|
||||||
PyModule_AddIntConstant(m, "SECOND", GST_SECOND);
|
PyModule_AddIntConstant(m, "SECOND", GST_SECOND);
|
||||||
PyModule_AddIntConstant(m, "MSECOND", GST_MSECOND);
|
PyModule_AddIntConstant(m, "MSECOND", GST_MSECOND);
|
||||||
PyModule_AddIntConstant(m, "NSECOND", GST_NSECOND);
|
PyModule_AddIntConstant(m, "NSECOND", GST_NSECOND);
|
||||||
|
|
||||||
|
/* LinkError exception */
|
||||||
|
PyGstExc_LinkError = PyErr_NewException("gst.LinkError",
|
||||||
|
PyExc_RuntimeError,
|
||||||
|
NULL);
|
||||||
|
PyDict_SetItemString(d, "LinkError", PyGstExc_LinkError);
|
||||||
|
|
||||||
pygst_register_classes (d);
|
pygst_register_classes (d);
|
||||||
pygst_add_constants (m, "GST_");
|
pygst_add_constants (m, "GST_");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue