diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-06-15 20:07:42 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-06-15 21:13:34 +0200 |
commit | 006caab0530c9bfac54377549b6bbe29dcde9654 (patch) | |
tree | 20b49505991be097a1e65f6f3fd296ab88d3db2b /gst/effectv/gstquark.c | |
parent | 438295acae08d0055edd8b70ba46c458ec1ac754 (diff) |
quarktv: Simplify some code
Diffstat (limited to 'gst/effectv/gstquark.c')
-rw-r--r-- | gst/effectv/gstquark.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/gst/effectv/gstquark.c b/gst/effectv/gstquark.c index 9f7b5db1..6cef1c93 100644 --- a/gst/effectv/gstquark.c +++ b/gst/effectv/gstquark.c @@ -202,38 +202,35 @@ gst_quarktv_planetable_clear (GstQuarkTV * filter) } } -static GstStateChangeReturn -gst_quarktv_change_state (GstElement * element, GstStateChange transition) +static gboolean +gst_quarktv_start (GstBaseTransform * trans) { - GstQuarkTV *filter = GST_QUARKTV (element); - GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS; + GstQuarkTV *filter = GST_QUARKTV (trans); - switch (transition) { - case GST_STATE_CHANGE_READY_TO_PAUSED: - filter->planetable = - (GstBuffer **) g_malloc0 (filter->planes * sizeof (GstBuffer *)); - break; - default: - break; + if (filter->planetable) { + gst_quarktv_planetable_clear (filter); + g_free (filter->planetable); } + filter->planetable = + (GstBuffer **) g_malloc0 (filter->planes * sizeof (GstBuffer *)); - if (GST_ELEMENT_CLASS (parent_class)->change_state) - ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); + return TRUE; +} - switch (transition) { - case GST_STATE_CHANGE_PAUSED_TO_READY: - gst_quarktv_planetable_clear (filter); - g_free (filter->planetable); - filter->planetable = NULL; - break; - default: - break; +static void +gst_quarktv_finalize (GObject * object) +{ + GstQuarkTV *filter = GST_QUARKTV (object); + + if (filter->planetable) { + gst_quarktv_planetable_clear (filter); + g_free (filter->planetable); + filter->planetable = NULL; } - return ret; + G_OBJECT_CLASS (parent_class)->finalize (object); } - static void gst_quarktv_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) @@ -310,22 +307,22 @@ static void gst_quarktv_class_init (GstQuarkTVClass * klass) { GObjectClass *gobject_class = (GObjectClass *) klass; - GstElementClass *element_class = (GstElementClass *) klass; GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass; gobject_class->set_property = gst_quarktv_set_property; gobject_class->get_property = gst_quarktv_get_property; + gobject_class->finalize = gst_quarktv_finalize; + g_object_class_install_property (gobject_class, PROP_PLANES, g_param_spec_int ("planes", "Planes", "Number of planes", 0, 64, PLANES, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - element_class->change_state = GST_DEBUG_FUNCPTR (gst_quarktv_change_state); - trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_quarktv_set_caps); trans_class->get_unit_size = GST_DEBUG_FUNCPTR (gst_quarktv_get_unit_size); trans_class->transform = GST_DEBUG_FUNCPTR (gst_quarktv_transform); + trans_class->start = GST_DEBUG_FUNCPTR (gst_quarktv_start); } static void |