summaryrefslogtreecommitdiff
path: root/gst/pygstminiobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/pygstminiobject.c')
-rw-r--r--gst/pygstminiobject.c455
1 files changed, 230 insertions, 225 deletions
diff --git a/gst/pygstminiobject.c b/gst/pygstminiobject.c
index dcd4ded..daa029e 100644
--- a/gst/pygstminiobject.c
+++ b/gst/pygstminiobject.c
@@ -24,12 +24,12 @@
#include "pygstminiobject.h"
#include <gst/gst.h>
-static const gchar pygstminiobject_class_id[] = "PyGstMiniObject::class";
-static GQuark pygstminiobject_class_key = 0;
+static const gchar pygstminiobject_class_id[] = "PyGstMiniObject::class";
+static GQuark pygstminiobject_class_key = 0;
/* static const gchar pygstminiobject_wrapper_id[] = "PyGstMiniObject::wrapper"; */
/* static GQuark pygstminiobject_wrapper_key = 0; */
-static void pygstminiobject_dealloc(PyGstMiniObject *self);
+static void pygstminiobject_dealloc (PyGstMiniObject * self);
/* static int pygstminiobject_traverse(PyGstMiniObject *self, visitproc visit, void *arg); */
/* static int pygstminiobject_clear(PyGstMiniObject *self); */
@@ -49,19 +49,19 @@ GST_DEBUG_CATEGORY_EXTERN (pygst_debug);
* GType has no registered type and a new type couldn't be created
*/
PyTypeObject *
-pygstminiobject_lookup_class(GType gtype)
+pygstminiobject_lookup_class (GType gtype)
{
- PyTypeObject *py_type = NULL;
- GType ctype = gtype;
-
- while (!py_type && ctype) {
- py_type = g_type_get_qdata(ctype, pygstminiobject_class_key);
- ctype = g_type_parent(ctype);
- }
- if (!ctype)
- g_error ("Couldn't find a good base type!!");
-
- return py_type;
+ PyTypeObject *py_type = NULL;
+ GType ctype = gtype;
+
+ while (!py_type && ctype) {
+ py_type = g_type_get_qdata (ctype, pygstminiobject_class_key);
+ ctype = g_type_parent (ctype);
+ }
+ if (!ctype)
+ g_error ("Couldn't find a good base type!!");
+
+ return py_type;
}
/**
@@ -78,49 +78,49 @@ pygstminiobject_lookup_class(GType gtype)
* which simplifies initialisation.
*/
void
-pygstminiobject_register_class(PyObject *dict, const gchar *type_name,
- GType gtype, PyTypeObject *type,
- PyObject *bases)
+pygstminiobject_register_class (PyObject * dict, const gchar * type_name,
+ GType gtype, PyTypeObject * type, PyObject * bases)
{
- PyObject *o;
- const char *class_name, *s;
-
- if (!pygstminiobject_class_key)
- pygstminiobject_class_key = g_quark_from_static_string(pygstminiobject_class_id);
-
- class_name = type->tp_name;
- s = strrchr(class_name, '.');
- if (s != NULL)
- class_name = s + 1;
-
- type->ob_type = &PyType_Type;
- type->tp_alloc = PyType_GenericAlloc;
- type->tp_new = PyType_GenericNew;
- if (bases) {
- type->tp_bases = bases;
- type->tp_base = (PyTypeObject *)PyTuple_GetItem(bases, 0);
- }
-
- if (PyType_Ready(type) < 0) {
- g_warning ("couldn't make the type `%s' ready", type->tp_name);
- return;
- }
-
- if (gtype) {
- o = pyg_type_wrapper_new(gtype);
- PyDict_SetItemString(type->tp_dict, "__gtype__", o);
- Py_DECREF(o);
-
- /* stash a pointer to the python class with the GType */
- Py_INCREF(type);
- g_type_set_qdata(gtype, pygstminiobject_class_key, type);
- }
-
- PyDict_SetItemString(dict, (char *)class_name, (PyObject *)type);
+ PyObject *o;
+ const char *class_name, *s;
+
+ if (!pygstminiobject_class_key)
+ pygstminiobject_class_key =
+ g_quark_from_static_string (pygstminiobject_class_id);
+
+ class_name = type->tp_name;
+ s = strrchr (class_name, '.');
+ if (s != NULL)
+ class_name = s + 1;
+
+ type->ob_type = &PyType_Type;
+ type->tp_alloc = PyType_GenericAlloc;
+ type->tp_new = PyType_GenericNew;
+ if (bases) {
+ type->tp_bases = bases;
+ type->tp_base = (PyTypeObject *) PyTuple_GetItem (bases, 0);
+ }
+
+ if (PyType_Ready (type) < 0) {
+ g_warning ("couldn't make the type `%s' ready", type->tp_name);
+ return;
+ }
+
+ if (gtype) {
+ o = pyg_type_wrapper_new (gtype);
+ PyDict_SetItemString (type->tp_dict, "__gtype__", o);
+ Py_DECREF (o);
+
+ /* stash a pointer to the python class with the GType */
+ Py_INCREF (type);
+ g_type_set_qdata (gtype, pygstminiobject_class_key, type);
+ }
+
+ PyDict_SetItemString (dict, (char *) class_name, (PyObject *) type);
}
void
-pygstminiobject_register_wrapper (PyObject *self)
+pygstminiobject_register_wrapper (PyObject * self)
{
}
@@ -135,239 +135,244 @@ pygstminiobject_register_wrapper (PyObject *self)
* Returns: a reference to the wrapper for the GstMiniObject.
*/
PyObject *
-pygstminiobject_new (GstMiniObject *obj)
+pygstminiobject_new (GstMiniObject * obj)
{
- PyGstMiniObject *self = NULL;
- PyGILState_STATE state;
- PyTypeObject *tp = NULL;
-
- if (obj == NULL) {
- Py_INCREF (Py_None);
- return Py_None;
- }
-
- /* since mini objects cannot notify us when they get destroyed, we
- * can't use a global hash to map GMO to PyO, and have to create a new
- * Python object every time we see it */
- tp = pygstminiobject_lookup_class (G_OBJECT_TYPE (obj));
- GST_DEBUG ("have to create wrapper for object %p", obj);
- if (!tp)
- g_warning ("Couldn't get class for type object : %p", obj);
- if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {
- GST_INFO ("Increment refcount %p", tp);
- Py_INCREF (tp);
- }
- state = pyg_gil_state_ensure();
- self = PyObject_New (PyGstMiniObject, tp);
- pyg_gil_state_release(state);
-
- if (self == NULL)
- return NULL;
- self->obj = gst_mini_object_ref (obj);
-
- self->inst_dict = NULL;
- self->weakreflist = NULL;
+ PyGstMiniObject *self = NULL;
+ PyGILState_STATE state;
+ PyTypeObject *tp = NULL;
- GST_DEBUG ("created Python object %p for GstMiniObject %p [ref:%d]",
- self, obj, GST_MINI_OBJECT_REFCOUNT_VALUE (obj));
- return (PyObject *) self;
+ if (obj == NULL) {
+ Py_INCREF (Py_None);
+ return Py_None;
+ }
+
+ /* since mini objects cannot notify us when they get destroyed, we
+ * can't use a global hash to map GMO to PyO, and have to create a new
+ * Python object every time we see it */
+ tp = pygstminiobject_lookup_class (G_OBJECT_TYPE (obj));
+ GST_DEBUG ("have to create wrapper for object %p", obj);
+ if (!tp)
+ g_warning ("Couldn't get class for type object : %p", obj);
+ if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {
+ GST_INFO ("Increment refcount %p", tp);
+ Py_INCREF (tp);
+ }
+ state = pyg_gil_state_ensure ();
+ self = PyObject_New (PyGstMiniObject, tp);
+ pyg_gil_state_release (state);
+
+ if (self == NULL)
+ return NULL;
+ self->obj = gst_mini_object_ref (obj);
+
+ self->inst_dict = NULL;
+ self->weakreflist = NULL;
+
+ GST_DEBUG ("created Python object %p for GstMiniObject %p [ref:%d]",
+ self, obj, GST_MINI_OBJECT_REFCOUNT_VALUE (obj));
+ return (PyObject *) self;
}
static void
-pygstminiobject_dealloc(PyGstMiniObject *self)
+pygstminiobject_dealloc (PyGstMiniObject * self)
{
- PyGILState_STATE state;
+ PyGILState_STATE state;
- g_return_if_fail (self != NULL);
+ g_return_if_fail (self != NULL);
- GST_DEBUG ("At the beginning %p", self);
- state = pyg_gil_state_ensure();
+ GST_DEBUG ("At the beginning %p", self);
+ state = pyg_gil_state_ensure ();
- if (self->obj) {
- GST_DEBUG ("PyO %p unreffing GstMiniObject %p [ref:%d]", self,
- self->obj, GST_MINI_OBJECT_REFCOUNT_VALUE (self->obj));
- gst_mini_object_unref(self->obj);
- GST_DEBUG ("setting self %p -> obj to NULL", self);
- self->obj = NULL;
- }
+ if (self->obj) {
+ GST_DEBUG ("PyO %p unreffing GstMiniObject %p [ref:%d]", self,
+ self->obj, GST_MINI_OBJECT_REFCOUNT_VALUE (self->obj));
+ gst_mini_object_unref (self->obj);
+ GST_DEBUG ("setting self %p -> obj to NULL", self);
+ self->obj = NULL;
+ }
- if (self->inst_dict) {
- Py_DECREF(self->inst_dict);
- self->inst_dict = NULL;
- }
+ if (self->inst_dict) {
+ Py_DECREF (self->inst_dict);
+ self->inst_dict = NULL;
+ }
- self->ob_type->tp_free((PyObject *) self);
- pyg_gil_state_release(state);
- GST_DEBUG ("At the end %p", self);
+ self->ob_type->tp_free ((PyObject *) self);
+ pyg_gil_state_release (state);
+ GST_DEBUG ("At the end %p", self);
}
static int
-pygstminiobject_compare(PyGstMiniObject *self, PyGstMiniObject *v)
+pygstminiobject_compare (PyGstMiniObject * self, PyGstMiniObject * v)
{
- if (self->obj == v->obj) return 0;
- if (self->obj > v->obj) return -1;
- return 1;
+ if (self->obj == v->obj)
+ return 0;
+ if (self->obj > v->obj)
+ return -1;
+ return 1;
}
static long
-pygstminiobject_hash(PyGstMiniObject *self)
+pygstminiobject_hash (PyGstMiniObject * self)
{
- return (long)self->obj;
+ return (long) self->obj;
}
static PyObject *
-pygstminiobject_repr(PyGstMiniObject *self)
+pygstminiobject_repr (PyGstMiniObject * self)
{
- gchar buf[256];
-
- g_snprintf(buf, sizeof(buf),
- "<%s mini-object (%s) at 0x%lx>",
- self->ob_type->tp_name,
- self->obj ? G_OBJECT_TYPE_NAME(self->obj) : "uninitialized",
- (long)self);
- return PyString_FromString(buf);
+ gchar buf[256];
+
+ g_snprintf (buf, sizeof (buf),
+ "<%s mini-object (%s) at 0x%lx>",
+ self->ob_type->tp_name,
+ self->obj ? G_OBJECT_TYPE_NAME (self->obj) : "uninitialized",
+ (long) self);
+ return PyString_FromString (buf);
}
static void
-pygstminiobject_free(PyObject *op)
+pygstminiobject_free (PyObject * op)
{
- PyObject_FREE(op);
+ PyObject_FREE (op);
}
/* ---------------- PyGstMiniObject methods ----------------- */
static int
-pygstminiobject_init(PyGstMiniObject *self, PyObject *args, PyObject *kwargs)
+pygstminiobject_init (PyGstMiniObject * self, PyObject * args,
+ PyObject * kwargs)
{
- GType object_type;
- GstMiniObjectClass *class;
-
- if (!PyArg_ParseTuple(args, ":GstMiniObject.__init__", &object_type))
- return -1;
-
- object_type = pyg_type_from_object((PyObject *)self);
- if (!object_type)
- return -1;
-
- if (G_TYPE_IS_ABSTRACT(object_type)) {
- PyErr_Format(PyExc_TypeError, "cannot create instance of abstract "
- "(non-instantiable) type `%s'", g_type_name(object_type));
- return -1;
- }
-
- if ((class = g_type_class_ref (object_type)) == NULL) {
- PyErr_SetString(PyExc_TypeError,
- "could not get a reference to type class");
- return -1;
- }
-
- self->obj = gst_mini_object_new(object_type);
- if (self->obj == NULL)
- PyErr_SetString (PyExc_RuntimeError, "could not create object");
-
- g_type_class_unref(class);
-
- return (self->obj) ? 0 : -1;
+ GType object_type;
+ GstMiniObjectClass *class;
+
+ if (!PyArg_ParseTuple (args, ":GstMiniObject.__init__", &object_type))
+ return -1;
+
+ object_type = pyg_type_from_object ((PyObject *) self);
+ if (!object_type)
+ return -1;
+
+ if (G_TYPE_IS_ABSTRACT (object_type)) {
+ PyErr_Format (PyExc_TypeError, "cannot create instance of abstract "
+ "(non-instantiable) type `%s'", g_type_name (object_type));
+ return -1;
+ }
+
+ if ((class = g_type_class_ref (object_type)) == NULL) {
+ PyErr_SetString (PyExc_TypeError,
+ "could not get a reference to type class");
+ return -1;
+ }
+
+ self->obj = gst_mini_object_new (object_type);
+ if (self->obj == NULL)
+ PyErr_SetString (PyExc_RuntimeError, "could not create object");
+
+ g_type_class_unref (class);
+
+ return (self->obj) ? 0 : -1;
}
static PyObject *
-pygstminiobject__gstminiobject_init__(PyGstMiniObject *self, PyObject *args, PyObject *kwargs)
+pygstminiobject__gstminiobject_init__ (PyGstMiniObject * self, PyObject * args,
+ PyObject * kwargs)
{
- if (pygstminiobject_init(self, args, kwargs) < 0)
- return NULL;
- Py_INCREF(Py_None);
- return Py_None;
+ if (pygstminiobject_init (self, args, kwargs) < 0)
+ return NULL;
+ Py_INCREF (Py_None);
+ return Py_None;
}
static PyObject *
-pygstminiobject_copy(PyGstMiniObject *self, PyObject *args)
+pygstminiobject_copy (PyGstMiniObject * self, PyObject * args)
{
- return pygstminiobject_new(gst_mini_object_copy(self->obj));
+ return pygstminiobject_new (gst_mini_object_copy (self->obj));
}
static PyMethodDef pygstminiobject_methods[] = {
- { "__gstminiobject_init__", (PyCFunction)pygstminiobject__gstminiobject_init__,
- METH_VARARGS|METH_KEYWORDS },
- { "copy", (PyCFunction)pygstminiobject_copy, METH_VARARGS, "Copies the miniobject"},
- { NULL, NULL, 0 }
+ {"__gstminiobject_init__",
+ (PyCFunction) pygstminiobject__gstminiobject_init__,
+ METH_VARARGS | METH_KEYWORDS},
+ {"copy", (PyCFunction) pygstminiobject_copy, METH_VARARGS,
+ "Copies the miniobject"},
+ {NULL, NULL, 0}
};
static PyObject *
-pygstminiobject_get_dict(PyGstMiniObject *self, void *closure)
+pygstminiobject_get_dict (PyGstMiniObject * self, void *closure)
{
- if (self->inst_dict == NULL) {
- self->inst_dict = PyDict_New();
- if (self->inst_dict == NULL)
- return NULL;
- }
- Py_INCREF(self->inst_dict);
- return self->inst_dict;
+ if (self->inst_dict == NULL) {
+ self->inst_dict = PyDict_New ();
+ if (self->inst_dict == NULL)
+ return NULL;
+ }
+ Py_INCREF (self->inst_dict);
+ return self->inst_dict;
}
static PyObject *
-pygstminiobject_get_refcount(PyGstMiniObject *self, void *closure)
+pygstminiobject_get_refcount (PyGstMiniObject * self, void *closure)
{
- return PyInt_FromLong(GST_MINI_OBJECT_REFCOUNT_VALUE(self->obj));
+ return PyInt_FromLong (GST_MINI_OBJECT_REFCOUNT_VALUE (self->obj));
}
static PyObject *
-pygstminiobject_get_flags(PyGstMiniObject *self, void *closure)
+pygstminiobject_get_flags (PyGstMiniObject * self, void *closure)
{
- return PyInt_FromLong(GST_MINI_OBJECT_FLAGS(self->obj));
+ return PyInt_FromLong (GST_MINI_OBJECT_FLAGS (self->obj));
}
static PyGetSetDef pygstminiobject_getsets[] = {
- { "__dict__", (getter)pygstminiobject_get_dict, (setter)0 },
- { "__grefcount__", (getter)pygstminiobject_get_refcount, (setter)0, },
- { "flags", (getter)pygstminiobject_get_flags, (setter)0, },
- { NULL, 0, 0 }
+ {"__dict__", (getter) pygstminiobject_get_dict, (setter) 0},
+ {"__grefcount__", (getter) pygstminiobject_get_refcount, (setter) 0,},
+ {"flags", (getter) pygstminiobject_get_flags, (setter) 0,},
+ {NULL, 0, 0}
};
PyTypeObject PyGstMiniObject_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- "gst.MiniObject", /* tp_name */
- sizeof(PyGstMiniObject), /* tp_basicsize */
- 0, /* tp_itemsize */
- /* methods */
- (destructor)pygstminiobject_dealloc, /* tp_dealloc */
- (printfunc)0, /* tp_print */
- (getattrfunc)0, /* tp_getattr */
- (setattrfunc)0, /* tp_setattr */
- (cmpfunc)pygstminiobject_compare, /* tp_compare */
- (reprfunc)pygstminiobject_repr, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc)pygstminiobject_hash, /* tp_hash */
- (ternaryfunc)0, /* tp_call */
- (reprfunc)0, /* tp_str */
- (getattrofunc)0, /* tp_getattro */
- (setattrofunc)0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc)0, /* tp_traverse */
- (inquiry)0, /* tp_clear */
- (richcmpfunc)0, /* tp_richcompare */
- offsetof(PyGstMiniObject, weakreflist), /* tp_weaklistoffset */
- (getiterfunc)0, /* tp_iter */
- (iternextfunc)0, /* tp_iternext */
- pygstminiobject_methods, /* tp_methods */
- 0, /* tp_members */
- pygstminiobject_getsets, /* tp_getset */
- (PyTypeObject *)0, /* tp_base */
- (PyObject *)0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- offsetof(PyGstMiniObject, inst_dict), /* tp_dictoffset */
- (initproc)pygstminiobject_init, /* tp_init */
- (allocfunc)0, /* tp_alloc */
- (newfunc)0, /* tp_new */
- (freefunc)pygstminiobject_free, /* tp_free */
- (inquiry)0, /* tp_is_gc */
- (PyObject *)0, /* tp_bases */
+ PyObject_HEAD_INIT (NULL)
+ 0, /* ob_size */
+ "gst.MiniObject", /* tp_name */
+ sizeof (PyGstMiniObject), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor) pygstminiobject_dealloc, /* tp_dealloc */
+ (printfunc) 0, /* tp_print */
+ (getattrfunc) 0, /* tp_getattr */
+ (setattrfunc) 0, /* tp_setattr */
+ (cmpfunc) pygstminiobject_compare, /* tp_compare */
+ (reprfunc) pygstminiobject_repr, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ (hashfunc) pygstminiobject_hash, /* tp_hash */
+ (ternaryfunc) 0, /* tp_call */
+ (reprfunc) 0, /* tp_str */
+ (getattrofunc) 0, /* tp_getattro */
+ (setattrofunc) 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+ NULL, /* Documentation string */
+ (traverseproc) 0, /* tp_traverse */
+ (inquiry) 0, /* tp_clear */
+ (richcmpfunc) 0, /* tp_richcompare */
+ offsetof (PyGstMiniObject, weakreflist), /* tp_weaklistoffset */
+ (getiterfunc) 0, /* tp_iter */
+ (iternextfunc) 0, /* tp_iternext */
+ pygstminiobject_methods, /* tp_methods */
+ 0, /* tp_members */
+ pygstminiobject_getsets, /* tp_getset */
+ (PyTypeObject *) 0, /* tp_base */
+ (PyObject *) 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ offsetof (PyGstMiniObject, inst_dict), /* tp_dictoffset */
+ (initproc) pygstminiobject_init, /* tp_init */
+ (allocfunc) 0, /* tp_alloc */
+ (newfunc) 0, /* tp_new */
+ (freefunc) pygstminiobject_free, /* tp_free */
+ (inquiry) 0, /* tp_is_gc */
+ (PyObject *) 0, /* tp_bases */
};
-