From c52a37cd82b5214057b67b1e1d5530345da5a299 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 3 Jul 2006 09:01:18 +0000 Subject: [PATCH] gst/: Use Py_BuildValue to construct tuples. Original commit message from CVS: reviewed by: Edward Hervey * gst/gstelement.override: * gst/gstevent.override: * gst/gstmessage.override: * gst/gstpad.override: * gst/gstquery.override: Use Py_BuildValue to construct tuples. Use tuples for collection of different objects. See http://www.python.org/doc/faq/general/#why-are-there-separate-tuple-and-list-data-types * testsuite/test_event.py: [message|query|event].parse_* now return tuples and not list. Fixes #334548 --- ChangeLog | 17 +++++++++++++ common | 2 +- gst/gstelement.override | 26 ++++++-------------- gst/gstevent.override | 54 +++++++++++++---------------------------- gst/gstmessage.override | 50 +++++++++++++------------------------- gst/gstpad.override | 41 ++++--------------------------- gst/gstquery.override | 54 ++++++++++++++--------------------------- testsuite/test_event.py | 4 +-- 8 files changed, 85 insertions(+), 163 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ac24df62b..3cf4763a0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2006-07-03 Johan Dahlin + + reviewed by: Edward Hervey + + * gst/gstelement.override: + * gst/gstevent.override: + * gst/gstmessage.override: + * gst/gstpad.override: + * gst/gstquery.override: + Use Py_BuildValue to construct tuples. + Use tuples for collection of different objects. + See http://www.python.org/doc/faq/general/#why-are-there-separate-tuple-and-list-data-types + * testsuite/test_event.py: + [message|query|event].parse_* now return tuples and not list. + + Fixes #334548 + 2006-07-02 Edward Hervey Removal of all glib < 2.8 cruft since GStreamer core now requires diff --git a/common b/common index 9eb7943282..a98b370bd4 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 9eb7943282c38c815cfbac34cff4062a94e72e62 +Subproject commit a98b370bd49bc3f3225bbd9013cda5a53789f53d diff --git a/gst/gstelement.override b/gst/gstelement.override index 3ee05cc61b..c178cce83e 100644 --- a/gst/gstelement.override +++ b/gst/gstelement.override @@ -370,7 +370,6 @@ _wrap_gst_element_query_position (PyGObject *self, PyObject *args) gint64 cur; gint format; PyObject *pformat; - PyObject *ret; pformat = (PyObject*)PyTuple_GetItem(args, 0); if (pyg_enum_get_value (GST_TYPE_FORMAT, pformat, &format)) { @@ -384,11 +383,9 @@ _wrap_gst_element_query_position (PyGObject *self, PyObject *args) return NULL; } - ret = PyList_New(2); - PyList_SetItem(ret, 0, PyLong_FromLongLong(cur)); - PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format )); - - return ret; + return Py_BuildValue("(OO)", + PyLong_FromLongLong(cur), + pyg_enum_from_gtype(GST_TYPE_FORMAT, format)); } %% override gst_element_query_duration args @@ -398,7 +395,6 @@ _wrap_gst_element_query_duration (PyGObject *self, PyObject *args) gint64 cur; gint format; PyObject *pformat; - PyObject *ret; pformat = (PyObject*)PyTuple_GetItem(args, 0); if (pyg_enum_get_value (GST_TYPE_FORMAT, pformat, &format)) { @@ -412,11 +408,8 @@ _wrap_gst_element_query_duration (PyGObject *self, PyObject *args) return NULL; } - ret = PyList_New(2); - PyList_SetItem(ret, 0, PyLong_FromLongLong(cur)); - PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format )); - - return ret; + return Py_BuildValue("(OO)", PyLong_FromLongLong(cur), + pyg_enum_from_gtype(GST_TYPE_FORMAT, format)); } %% override gst_element_query_convert kwargs @@ -427,7 +420,6 @@ _wrap_gst_element_query_convert (PyGObject *self, PyObject *args, PyObject *kwar PyObject *pfromformat, *pdestformat; GstFormat srcformat, destformat; gint64 fromval, dstval; - PyObject *ret; /* Input : src_format, src_val, dst_format */ /* Returns : dst_format, dst_val OR None */ @@ -453,11 +445,9 @@ _wrap_gst_element_query_convert (PyGObject *self, PyObject *args, PyObject *kwar return Py_None; } - ret = PyList_New(2); - PyList_SetItem(ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, destformat)); - PyList_SetItem(ret, 1, PyLong_FromLongLong(dstval)); - - return ret; + return Py_BuildValue("(OO)", + pyg_enum_from_gtype(GST_TYPE_FORMAT, destformat), + PyLong_FromLongLong(dstval)); } %% override gst_element_get_query_types noargs diff --git a/gst/gstevent.override b/gst/gstevent.override index 3a620a4310..1534f39638 100644 --- a/gst/gstevent.override +++ b/gst/gstevent.override @@ -54,7 +54,6 @@ override gst_event_parse_new_segment noargs static PyObject * _wrap_gst_event_parse_new_segment (PyGstMiniObject *self) { - PyObject *ret; gboolean update; gdouble rate; GstFormat format; @@ -67,16 +66,11 @@ _wrap_gst_event_parse_new_segment (PyGstMiniObject *self) gst_event_parse_new_segment (GST_EVENT(self->obj), &update, &rate, &format, &start_value, &stop_value, &base); - - ret = PyList_New (6); - PyList_SetItem (ret, 0, PyBool_FromLong(update)); - PyList_SetItem (ret, 1, PyFloat_FromDouble(rate)); - PyList_SetItem (ret, 2, pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); - PyList_SetItem (ret, 3, PyLong_FromUnsignedLongLong(start_value)); - PyList_SetItem (ret, 4, PyLong_FromUnsignedLongLong(stop_value)); - PyList_SetItem (ret, 5, PyLong_FromUnsignedLongLong(base)); - return ret; + return Py_BuildValue("(OfOKKK)", + PyBool_FromLong(update), + rate, pyg_enum_from_gtype (GST_TYPE_FORMAT, format), + start_value, stop_value, base); } %% override gst_event_parse_tag noargs @@ -102,7 +96,6 @@ override gst_event_parse_qos noargs static PyObject * _wrap_gst_event_parse_qos (PyGstMiniObject *self) { - PyObject *ret; gdouble proportion; GstClockTimeDiff diff; GstClockTime timestamp; @@ -115,19 +108,13 @@ _wrap_gst_event_parse_qos (PyGstMiniObject *self) gst_event_parse_qos (GST_EVENT(self->obj), &proportion, &diff, ×tamp); - ret = PyList_New (3); - PyList_SetItem (ret, 0, PyFloat_FromDouble(proportion)); - PyList_SetItem (ret, 1, PyLong_FromLongLong(diff)); - PyList_SetItem (ret, 2, PyLong_FromUnsignedLongLong(timestamp)); - - return ret; + return Py_BuildValue("(fLK)", proportion, diff, timestamp); } %% override gst_event_parse_seek noargs static PyObject * _wrap_gst_event_parse_seek (PyGstMiniObject *self) { - PyObject *ret; gdouble rate; GstFormat format; GstSeekFlags flags; @@ -144,24 +131,20 @@ _wrap_gst_event_parse_seek (PyGstMiniObject *self) gst_event_parse_seek (GST_EVENT(self->obj), &rate, &format, &flags, &cur_type, &cur, &stop_type, &stop); - ret = PyList_New (7); - PyList_SetItem (ret, 0, PyFloat_FromDouble(rate)); - PyList_SetItem (ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); - PyList_SetItem (ret, 2, pyg_flags_from_gtype (GST_TYPE_SEEK_FLAGS, flags)); - PyList_SetItem (ret, 3, pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, cur_type)); - PyList_SetItem (ret, 4, PyLong_FromUnsignedLongLong (cur)); - PyList_SetItem (ret, 5, - pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, stop_type)); - PyList_SetItem (ret, 6, PyLong_FromUnsignedLongLong (stop)); - - return ret; + return Py_BuildValue("(fOOOKOK)", + rate, + pyg_enum_from_gtype (GST_TYPE_FORMAT, format), + pyg_flags_from_gtype (GST_TYPE_SEEK_FLAGS, flags), + pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, cur_type), + cur, + pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, stop_type), + stop); } %% override gst_event_parse_buffer_size noargs static PyObject * _wrap_gst_event_parse_buffer_size (PyGstMiniObject *self) { - PyObject *ret; GstFormat format; gint64 minsize; gint64 maxsize; @@ -176,11 +159,8 @@ _wrap_gst_event_parse_buffer_size (PyGstMiniObject *self) &format, &minsize, &maxsize, &async); - ret = PyList_New (4); - PyList_SetItem (ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); - PyList_SetItem (ret, 1, PyLong_FromLongLong (minsize)); - PyList_SetItem (ret, 2, PyLong_FromLongLong (maxsize)); - PyList_SetItem (ret, 3, PyBool_FromLong (async)); - - return ret; + return Py_BuildValue("(OLLO)", + pyg_enum_from_gtype(GST_TYPE_FORMAT, format), + minsize, maxsize, + PyBool_FromLong(async)); } diff --git a/gst/gstmessage.override b/gst/gstmessage.override index 0fea6cb3f9..73cb630380 100644 --- a/gst/gstmessage.override +++ b/gst/gstmessage.override @@ -56,7 +56,6 @@ _wrap_gst_message_parse_state_changed (PyGstMiniObject *self) GstState old; GstState new; GstState pen; - PyObject *ret; /* Should raise an exception if it's not a state-changed message */ if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_STATE_CHANGED) { @@ -64,12 +63,11 @@ _wrap_gst_message_parse_state_changed (PyGstMiniObject *self) return NULL; } gst_message_parse_state_changed (GST_MESSAGE(self->obj), &old, &new, &pen); - /* Return this as a tuple */ - ret = PyList_New(3); - PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype(GST_TYPE_STATE, old)); - PyList_SET_ITEM(ret, 1, pyg_enum_from_gtype(GST_TYPE_STATE, new)); - PyList_SET_ITEM(ret, 2, pyg_enum_from_gtype(GST_TYPE_STATE, pen)); - return ret; + + return Py_BuildValue("(OOO)", + pyg_enum_from_gtype(GST_TYPE_STATE, old), + pyg_enum_from_gtype(GST_TYPE_STATE, new), + pyg_enum_from_gtype(GST_TYPE_STATE, pen)); } %% override gst_message_parse_segment_start noargs @@ -78,7 +76,6 @@ _wrap_gst_message_parse_segment_start (PyGstMiniObject *self) { gint64 position; GstFormat format; - PyObject *ret; /* Should raise an exception if it's not a segment start message */ if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_SEGMENT_START) { @@ -87,12 +84,9 @@ _wrap_gst_message_parse_segment_start (PyGstMiniObject *self) } gst_message_parse_segment_start (GST_MESSAGE(self->obj), &format, &position); - /* Return this as a tuple */ - ret = PyList_New(2); - PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format)); - PyList_SET_ITEM(ret, 1, PyLong_FromLongLong(position)); - - return ret; + return Py_BuildValue("(OL)", + pyg_enum_from_gtype(GST_TYPE_FORMAT, format), + PyLong_FromLongLong(position)); } %% @@ -102,7 +96,6 @@ _wrap_gst_message_parse_segment_done (PyGstMiniObject *self) { gint64 position; GstFormat format; - PyObject *ret; /* Should raise an exception if it's not a segment done message */ if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_SEGMENT_DONE) { @@ -111,12 +104,9 @@ _wrap_gst_message_parse_segment_done (PyGstMiniObject *self) } gst_message_parse_segment_done (GST_MESSAGE(self->obj), &format, &position); - /* Return this as a tuple */ - ret = PyList_New(2); - PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format)); - PyList_SET_ITEM(ret, 1, PyLong_FromLongLong(position)); - - return ret; + return Py_BuildValue("(OL)", + pyg_enum_from_gtype(GST_TYPE_FORMAT, format), + PyLong_FromLongLong(position)); } %% @@ -197,7 +187,6 @@ _wrap_gst_message_parse_clock_provide (PyGstMiniObject *self) { GstClock *clock; gboolean ready; - PyObject *ret; if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_CLOCK_PROVIDE) { PyErr_SetString(PyExc_TypeError, "Message is not a 'clock provide' message"); @@ -206,11 +195,9 @@ _wrap_gst_message_parse_clock_provide (PyGstMiniObject *self) gst_message_parse_clock_provide (GST_MESSAGE(self->obj), &clock, &ready); - ret = PyList_New(2); - PyList_SET_ITEM(ret, 0, pygobject_new(G_OBJECT (clock))); - PyList_SET_ITEM(ret, 1, PyBool_FromLong(ready)); - - return ret; + return Py_BuildValue("(OO)", + pygobject_new(G_OBJECT (clock)), + PyBool_FromLong(ready)); } %% override gst_message_parse_clock_lost noargs @@ -251,7 +238,6 @@ _wrap_gst_message_parse_duration (PyGstMiniObject *self) { GstFormat format; gint64 duration; - PyObject *ret; if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_DURATION) { PyErr_SetString(PyExc_TypeError, "Message is not a 'duration' message"); @@ -260,9 +246,7 @@ _wrap_gst_message_parse_duration (PyGstMiniObject *self) gst_message_parse_duration (GST_MESSAGE(self->obj), &format, &duration); - ret = PyList_New(2); - PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); - PyList_SET_ITEM(ret, 1, PyLong_FromLongLong(duration)); - - return ret; + return Py_BuildValue("(OL)", + pyg_enum_from_gtype (GST_TYPE_FORMAT, format), + PyLong_FromLongLong(duration)); } diff --git a/gst/gstpad.override b/gst/gstpad.override index 818b64dc77..c0d480af42 100644 --- a/gst/gstpad.override +++ b/gst/gstpad.override @@ -680,36 +680,8 @@ _wrap_gst_pad_query_position (PyGObject *self, PyObject *args) } if ((gst_pad_query_position(GST_PAD (self->obj), (GstFormat*) &format, &cur))) { - ret = PyList_New(2); - PyList_SetItem(ret, 0, PyLong_FromLongLong(cur)); - PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format )); - } else { - Py_INCREF(Py_None); - ret = Py_None; - } - - return ret; -} -%% -override gst_pad_query_duration args -static PyObject * -_wrap_gst_pad_query_duration (PyGObject *self, PyObject *args) -{ - gint64 cur; - gint format; - PyObject *pformat; - PyObject *ret; - - pformat = (PyObject*)PyTuple_GetItem(args, 0); - if (pyg_enum_get_value (GST_TYPE_FORMAT, pformat, &format)) { - PyErr_SetString(PyExc_TypeError, "argument should be a GstFormat"); - return NULL; - } - - if ((gst_pad_query_duration(GST_PAD (self->obj), (GstFormat*) &format, &cur))) { - ret = PyList_New(2); - PyList_SetItem(ret, 0, PyLong_FromLongLong(cur)); - PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format )); + ret = Py_BuildValue("(LO)", cur, + pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); } else { Py_INCREF(Py_None); ret = Py_None; @@ -726,7 +698,6 @@ _wrap_gst_pad_query_convert (PyGObject *self, PyObject *args, PyObject *kwargs) PyObject *pfromformat, *pdestformat; GstFormat srcformat, destformat; gint64 fromval, dstval; - PyObject *ret; /* Input : src_format, src_val, dst_format */ /* Returns : dst_format, dst_val OR None */ @@ -751,11 +722,9 @@ _wrap_gst_pad_query_convert (PyGObject *self, PyObject *args, PyObject *kwargs) return Py_None; } - ret = PyList_New(2); - PyList_SetItem(ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, destformat)); - PyList_SetItem(ret, 1, PyLong_FromLongLong(dstval)); - - return ret; + return Py_BuildValue("(OL)", + pyg_enum_from_gtype (GST_TYPE_FORMAT, destformat), + dstval); } %% override gst_pad_alloc_buffer kwargs diff --git a/gst/gstquery.override b/gst/gstquery.override index 1b54225e1b..da459aa19e 100644 --- a/gst/gstquery.override +++ b/gst/gstquery.override @@ -29,7 +29,6 @@ _wrap_gst_query_parse_position (PyGstMiniObject *self) { GstFormat format; gint64 cur; - PyObject *ret; if (GST_QUERY_TYPE(self->obj) != GST_QUERY_POSITION) { PyErr_SetString(PyExc_TypeError, "Query is not a 'Position' query"); @@ -38,11 +37,8 @@ _wrap_gst_query_parse_position (PyGstMiniObject *self) gst_query_parse_position (GST_QUERY(self->obj), &format, &cur); - ret = PyList_New(2); - PyList_SetItem(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format)); - PyList_SetItem(ret, 1, PyLong_FromLongLong(cur)); - - return ret; + return Py_BuildValue("(LO)", cur, + pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); } %% override gst_query_parse_duration noargs @@ -51,7 +47,6 @@ _wrap_gst_query_parse_duration (PyGstMiniObject *self) { GstFormat format; gint64 cur; - PyObject *ret; if (GST_QUERY_TYPE(self->obj) != GST_QUERY_DURATION) { PyErr_SetString(PyExc_TypeError, "Query is not a 'Duration' query"); @@ -60,11 +55,8 @@ _wrap_gst_query_parse_duration (PyGstMiniObject *self) gst_query_parse_duration (GST_QUERY(self->obj), &format, &cur); - ret = PyList_New(2); - PyList_SetItem(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format)); - PyList_SetItem(ret, 1, PyLong_FromLongLong(cur)); - - return ret; + return Py_BuildValue("(LO)", cur, + pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); } %% override gst_query_parse_convert noargs @@ -73,7 +65,6 @@ _wrap_gst_query_parse_convert (PyGstMiniObject *self) { GstFormat srcformat, destformat; gint64 srcvalue, destvalue; - PyObject *ret; if (GST_QUERY_TYPE(self->obj) != GST_QUERY_CONVERT) { PyErr_SetString(PyExc_TypeError, "Query is not a 'Convert' query"); @@ -84,20 +75,17 @@ _wrap_gst_query_parse_convert (PyGstMiniObject *self) &srcformat, &srcvalue, &destformat, &destvalue); - ret = PyList_New(4); - PyList_SetItem(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, srcformat)); - PyList_SetItem(ret, 1, PyLong_FromLongLong(srcvalue)); - PyList_SetItem(ret, 2, pyg_enum_from_gtype(GST_TYPE_FORMAT, destformat)); - PyList_SetItem(ret, 3, PyLong_FromLongLong(destvalue)); - - return ret; + return Py_BuildValue("(OLOL)", + pyg_enum_from_gtype(GST_TYPE_FORMAT, srcformat), + srcvalue, + pyg_enum_from_gtype(GST_TYPE_FORMAT, destformat), + destvalue); } %% override gst_query_parse_segment noargs static PyObject * _wrap_gst_query_parse_segment (PyGstMiniObject *self) { - PyObject *ret; gdouble rate; GstFormat format; gint64 start_value; @@ -112,20 +100,16 @@ _wrap_gst_query_parse_segment (PyGstMiniObject *self) &rate, &format, &start_value, &stop_value); - ret = PyList_New(4); - PyList_SetItem (ret, 0, PyFloat_FromDouble(rate)); - PyList_SetItem (ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); - PyList_SetItem (ret, 2, PyLong_FromUnsignedLongLong(start_value)); - PyList_SetItem (ret, 3, PyLong_FromUnsignedLongLong(stop_value)); - - return ret; + return Py_BuildValue("(fOLL)", + rate, + pyg_enum_from_gtype (GST_TYPE_FORMAT, format), + start_value, stop_value); } %% override gst_query_parse_seeking noargs static PyObject * _wrap_gst_query_parse_seeking (PyGstMiniObject *self) { - PyObject *ret; GstFormat format; gboolean seekable; gint64 segment_start, segment_end; @@ -139,13 +123,11 @@ _wrap_gst_query_parse_seeking (PyGstMiniObject *self) &format, &seekable, &segment_start, &segment_end); - ret = PyList_New(4); - PyList_SetItem (ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, format)); - PyList_SetItem (ret, 1, PyBool_FromLong (seekable)); - PyList_SetItem (ret, 2, PyLong_FromLongLong(segment_start)); - PyList_SetItem (ret, 3, PyLong_FromLongLong(segment_end)); - - return ret; + return Py_BuildValue("(OLKK)", + pyg_enum_from_gtype (GST_TYPE_FORMAT, format), + seekable, + segment_start, + segment_end); } %% override gst_query_parse_formats_length noargs diff --git a/testsuite/test_event.py b/testsuite/test_event.py index b9628964dd..015027ff1a 100644 --- a/testsuite/test_event.py +++ b/testsuite/test_event.py @@ -61,8 +61,8 @@ class EventTest(TestCase): self.sink.send_event(event) gst.debug('sent event') - self.assertEqual(event.parse_seek(), [1.0, gst.FORMAT_BYTES, gst.SEEK_FLAG_FLUSH, - gst.SEEK_TYPE_SET, 0, gst.SEEK_TYPE_NONE, 0]) + self.assertEqual(event.parse_seek(), (1.0, gst.FORMAT_BYTES, gst.SEEK_FLAG_FLUSH, + gst.SEEK_TYPE_SET, 0, gst.SEEK_TYPE_NONE, 0)) def testWrongEvent(self): buffer = gst.Buffer()