mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
testsuite/interface.py (Availability.testXOverlay): Extend to test method calling on interfaces
Original commit message from CVS: * testsuite/interface.py (Availability.testXOverlay): Extend to test method calling on interfaces * testsuite/common.py: call pygtk.require first * gst/gstbin.override (_wrap_gst_bin_get_by_name): Add a keyword argument recurse and remove _wrap_gst_bin_get_by_name_recurse_up. * gst/gst.override (_wrap_gst_element_get_pad_list): Split out bin functions to ... * gst/gstbin.override: .. this file * gst/gst.defs (bin_new): allow NULL for first argument. (child_state_change): Remove, it's private.
This commit is contained in:
parent
06761336fe
commit
c0d4251e20
7 changed files with 186 additions and 109 deletions
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
|||
2004-05-24 Johan Dahlin <johan@gnome.org>
|
||||
|
||||
* testsuite/interface.py (Availability.testXOverlay): Extend to
|
||||
test method calling on interfaces
|
||||
|
||||
* testsuite/common.py: call pygtk.require first
|
||||
|
||||
* gst/gstbin.override (_wrap_gst_bin_get_by_name): Add a
|
||||
keyword argument recurse and remove
|
||||
_wrap_gst_bin_get_by_name_recurse_up.
|
||||
|
||||
* gst/gst.override (_wrap_gst_element_get_pad_list): Split out bin
|
||||
functions to ...
|
||||
|
||||
* gst/gstbin.override: .. this file
|
||||
|
||||
* gst/gst.defs (bin_new): allow NULL for first argument.
|
||||
(child_state_change): Remove, it's private.
|
||||
|
||||
2004-05-04 Johan Dahlin <johan@gnome.org>
|
||||
|
||||
* gst/gst-types.defs (Buffer): Add some fields
|
||||
|
|
13
gst/gst.defs
13
gst/gst.defs
|
@ -70,7 +70,7 @@
|
|||
(is-constructor-of "GstBin")
|
||||
(return-type "GstElement*")
|
||||
(parameters
|
||||
'("const-gchar*" "name")
|
||||
'("const-gchar*" "name" (null-ok) (default "NULL"))
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -187,17 +187,6 @@
|
|||
(return-type "GstElementStateReturn")
|
||||
)
|
||||
|
||||
(define-method child_state_change
|
||||
(of-object "GstBin")
|
||||
(c-name "gst_bin_child_state_change")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GstElementState" "oldstate")
|
||||
'("GstElementState" "newstate")
|
||||
'("GstElement*" "child")
|
||||
)
|
||||
)
|
||||
|
||||
(define-method set_pre_iterate_function
|
||||
(of-object "GstBin")
|
||||
(c-name "gst_bin_set_pre_iterate_function")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* -*- Mode: C; ; c-file-style: "python" -*- */
|
||||
/* gst-python
|
||||
so/* gst-python
|
||||
* Copyright (C) 2002 David I. Lehn
|
||||
* Copyright (C) 2004 Johan Dahlin
|
||||
*
|
||||
|
@ -39,6 +39,7 @@ static PyObject *_wrap_gst_element_factory_make(PyObject *self, PyObject *args,
|
|||
|
||||
%%
|
||||
include
|
||||
gstbin.override
|
||||
gstbuffer.override
|
||||
gstpad-handlers.override
|
||||
%%
|
||||
|
@ -95,38 +96,6 @@ ignore
|
|||
gst_tag_list_copy_value
|
||||
gst_trace_read_tsc
|
||||
%%
|
||||
override gst_bin_iterate
|
||||
static PyObject *
|
||||
_wrap_gst_bin_iterate(PyGObject *self)
|
||||
{
|
||||
int ret;
|
||||
|
||||
pyg_unblock_threads();
|
||||
ret = gst_bin_iterate(GST_BIN(self->obj));
|
||||
pyg_block_threads();
|
||||
return PyInt_FromLong(ret);
|
||||
}
|
||||
%%
|
||||
override gst_bin_get_list
|
||||
static PyObject *
|
||||
_wrap_gst_bin_get_list(PyGObject *self)
|
||||
{
|
||||
GList *elements, *l;
|
||||
PyObject *tuple;
|
||||
int i;
|
||||
|
||||
elements = (GList*)gst_bin_get_list(GST_BIN(self->obj));
|
||||
tuple = PyTuple_New(g_list_length(elements));
|
||||
for (i = 0, l = elements; l; l = l->next, i++) {
|
||||
GstElement *element = (GstElement*)l->data;
|
||||
if (!element)
|
||||
continue;
|
||||
PyTuple_SetItem(tuple, i, pygobject_new(G_OBJECT(element)));
|
||||
}
|
||||
|
||||
return tuple;
|
||||
}
|
||||
%%
|
||||
override gst_element_get_pad_list noargs
|
||||
static PyObject *
|
||||
_wrap_gst_element_get_pad_list(PyGObject *self)
|
||||
|
@ -268,70 +237,6 @@ _wrap_gst_element_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
|
|||
return Py_BuildValue("(bL)", ret, dest_value);
|
||||
}
|
||||
%%
|
||||
override gst_bin_add_many args
|
||||
static PyObject *
|
||||
_wrap_gst_bin_add_many(PyGObject *self, PyObject *args)
|
||||
{
|
||||
PyGObject *element;
|
||||
int i, len;
|
||||
|
||||
len = PyTuple_Size(args);
|
||||
if (len == 0) {
|
||||
PyErr_SetString(PyExc_TypeError, "GstBin.add_many requires at least one argument");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
if (!pygobject_check(element, &PyGstElement_Type))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "argument must be a GstElement");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
gst_bin_add(GST_BIN(self->obj), GST_ELEMENT(element->obj));
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%%
|
||||
override gst_bin_remove_many args
|
||||
static PyObject *
|
||||
_wrap_gst_bin_remove_many(PyGObject *self, PyObject *args)
|
||||
{
|
||||
PyGObject *element;
|
||||
int i, len;
|
||||
|
||||
len = PyTuple_Size(args);
|
||||
if (len == 0) {
|
||||
PyErr_SetString(PyExc_TypeError, "GstBin.remove_many requires at least one argument");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
if (!pygobject_check(element, &PyGstElement_Type))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "argument must be a GstElement");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
gst_bin_remove(GST_BIN(self->obj), GST_ELEMENT(element->obj));
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%%
|
||||
override gst_element_link_many args
|
||||
static PyObject *
|
||||
_wrap_gst_element_link_many(PyObject *self, PyObject *args)
|
||||
|
|
143
gst/gstbin.override
Normal file
143
gst/gstbin.override
Normal file
|
@ -0,0 +1,143 @@
|
|||
/* -*- Mode: C; ; c-file-style: "python" -*- */
|
||||
/* gst-python
|
||||
* Copyright (C) 2004 Johan Dahlin
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Author: Johan Dahlin <johan@gnome.org>
|
||||
*/
|
||||
|
||||
%%
|
||||
ignore
|
||||
gst_bin_get_by_name_recurse_up
|
||||
%%
|
||||
override gst_bin_add_many args
|
||||
static PyObject *
|
||||
_wrap_gst_bin_add_many(PyGObject *self, PyObject *args)
|
||||
{
|
||||
PyGObject *element;
|
||||
int i, len;
|
||||
|
||||
len = PyTuple_Size(args);
|
||||
if (len == 0) {
|
||||
PyErr_SetString(PyExc_TypeError, "GstBin.add_many requires at least one argument");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
if (!pygobject_check(element, &PyGstElement_Type))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "argument must be a GstElement");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
gst_bin_add(GST_BIN(self->obj), GST_ELEMENT(element->obj));
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%%
|
||||
override gst_bin_remove_many args
|
||||
static PyObject *
|
||||
_wrap_gst_bin_remove_many(PyGObject *self, PyObject *args)
|
||||
{
|
||||
PyGObject *element;
|
||||
int i, len;
|
||||
|
||||
len = PyTuple_Size(args);
|
||||
if (len == 0) {
|
||||
PyErr_SetString(PyExc_TypeError, "GstBin.remove_many requires at least one argument");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
if (!pygobject_check(element, &PyGstElement_Type))
|
||||
{
|
||||
PyErr_SetString(PyExc_TypeError, "argument must be a GstElement");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
element = (PyGObject*)PyTuple_GetItem(args, i);
|
||||
gst_bin_remove(GST_BIN(self->obj), GST_ELEMENT(element->obj));
|
||||
}
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%%
|
||||
override gst_bin_iterate noargs
|
||||
static PyObject *
|
||||
_wrap_gst_bin_iterate(PyGObject *self)
|
||||
{
|
||||
int ret;
|
||||
|
||||
pyg_unblock_threads();
|
||||
ret = gst_bin_iterate(GST_BIN(self->obj));
|
||||
pyg_block_threads();
|
||||
return PyInt_FromLong(ret);
|
||||
}
|
||||
%%
|
||||
override gst_bin_get_list noargs
|
||||
static PyObject *
|
||||
_wrap_gst_bin_get_list(PyGObject *self)
|
||||
{
|
||||
GList *elements, *l;
|
||||
PyObject *tuple;
|
||||
int i;
|
||||
|
||||
elements = (GList*)gst_bin_get_list(GST_BIN(self->obj));
|
||||
tuple = PyTuple_New(g_list_length(elements));
|
||||
for (i = 0, l = elements; l; l = l->next, i++) {
|
||||
GstElement *element = (GstElement*)l->data;
|
||||
if (!element)
|
||||
continue;
|
||||
PyTuple_SetItem(tuple, i, pygobject_new(G_OBJECT(element)));
|
||||
}
|
||||
|
||||
return tuple;
|
||||
}
|
||||
%%
|
||||
override gst_bin_get_by_name kwargs
|
||||
static PyObject *
|
||||
_wrap_gst_bin_get_by_name(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||
{
|
||||
static char *kwlist[] = { "name", "recurse", NULL };
|
||||
char *name;
|
||||
gboolean recurse = FALSE;
|
||||
GstElement *ret;
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|b:GstBin.get_by_name",
|
||||
kwlist, &name, &recurse))
|
||||
return NULL;
|
||||
|
||||
if (recurse)
|
||||
ret = gst_bin_get_by_name_recurse_up(GST_BIN(self->obj), name);
|
||||
else
|
||||
ret = gst_bin_get_by_name(GST_BIN(self->obj), name);
|
||||
|
||||
/* pygobject_new handles NULL checking */
|
||||
return pygobject_new((GObject *)ret);
|
||||
}
|
|
@ -3,6 +3,11 @@ import os
|
|||
import sys
|
||||
import unittest
|
||||
|
||||
import pygtk
|
||||
pygtk.require('2.0')
|
||||
|
||||
import gobject
|
||||
|
||||
# Don't insert before .
|
||||
sys.path.insert(1, os.path.join('..'))
|
||||
|
||||
|
|
|
@ -16,5 +16,13 @@ class Availability(unittest.TestCase):
|
|||
assert hasattr(interfaces, 'Mixer')
|
||||
assert issubclass(interfaces.Mixer, gobject.GInterface)
|
||||
|
||||
if getattr(gobject, 'pygtk_version', ()) >= (2,3,92):
|
||||
class FunctionCall(unittest.TestCase):
|
||||
def testXOverlay(self):
|
||||
element = gst.Element('xvimagesink')
|
||||
assert isinstance(element, gst.Element)
|
||||
assert isinstance(element, interfaces.XOverlay)
|
||||
element.set_xwindow_id(0L)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
@ -16,5 +16,13 @@ class Availability(unittest.TestCase):
|
|||
assert hasattr(interfaces, 'Mixer')
|
||||
assert issubclass(interfaces.Mixer, gobject.GInterface)
|
||||
|
||||
if getattr(gobject, 'pygtk_version', ()) >= (2,3,92):
|
||||
class FunctionCall(unittest.TestCase):
|
||||
def testXOverlay(self):
|
||||
element = gst.Element('xvimagesink')
|
||||
assert isinstance(element, gst.Element)
|
||||
assert isinstance(element, interfaces.XOverlay)
|
||||
element.set_xwindow_id(0L)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in a new issue