summaryrefslogtreecommitdiffstats
path: root/gst/flx
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-11-16 17:00:32 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-11-16 17:00:32 +0000
commitd94e691beeba2ab03645a4cda2316954ddfe1809 (patch)
treec2939a295ea84b51d80d75bf1d3dba3b8efe4441 /gst/flx
parent14e816674053a610aaf5d51831b70138c6d159bd (diff)
gst/flx/gstflxdec.c: Fix state change.
Original commit message from CVS: * gst/flx/gstflxdec.c: (gst_flxdec_change_state): Fix state change.
Diffstat (limited to 'gst/flx')
-rw-r--r--gst/flx/gstflxdec.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
index 1d50a9c7..e3e4bcc8 100644
--- a/gst/flx/gstflxdec.c
+++ b/gst/flx/gstflxdec.c
@@ -598,6 +598,7 @@ static GstStateChangeReturn
gst_flxdec_change_state (GstElement * element, GstStateChange transition)
{
GstFlxDec *flxdec;
+ GstStateChangeReturn ret;
flxdec = GST_FLXDEC (element);
@@ -610,21 +611,31 @@ gst_flxdec_change_state (GstElement * element, GstStateChange transition)
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
break;
+ default:
+ break;
+ }
+
+ ret = parent_class->change_state (element, transition);
+
+ switch (transition) {
case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
- gst_buffer_unref (flxdec->frame);
- flxdec->frame = NULL;
- gst_buffer_unref (flxdec->delta);
- flxdec->delta = NULL;
+ if (flxdec->frame) {
+ gst_buffer_unref (flxdec->frame);
+ flxdec->frame = NULL;
+ }
+ if (flxdec->delta) {
+ gst_buffer_unref (flxdec->delta);
+ flxdec->delta = NULL;
+ }
break;
case GST_STATE_CHANGE_READY_TO_NULL:
break;
+ default:
+ break;
}
-
- return parent_class->change_state (element, transition);
-
- //return GST_STATE_CHANGE_SUCCESS;
+ return ret;
}
static void