From 9eaccf65508891a62d27fc43370b44b872242057 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Thu, 12 Feb 2009 17:31:50 -0800 Subject: dshowvideosink: Return ASYNC appropriately from change_state. Make sure we don't do the wrong thing when our base class is returning ASYNC in state changes. --- sys/dshowvideosink/dshowvideosink.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'sys/dshowvideosink') diff --git a/sys/dshowvideosink/dshowvideosink.cpp b/sys/dshowvideosink/dshowvideosink.cpp index 0745921c..ae17c271 100644 --- a/sys/dshowvideosink/dshowvideosink.cpp +++ b/sys/dshowvideosink/dshowvideosink.cpp @@ -869,7 +869,7 @@ static GstStateChangeReturn gst_dshowvideosink_change_state (GstElement * element, GstStateChange transition) { GstDshowVideoSink *sink = GST_DSHOWVIDEOSINK (element); - GstStateChangeReturn ret; + GstStateChangeReturn ret, rettmp; switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: @@ -878,7 +878,7 @@ gst_dshowvideosink_change_state (GstElement * element, GstStateChange transition break; case GST_STATE_CHANGE_PAUSED_TO_PLAYING: ret = gst_dshowvideosink_start_graph (sink); - if (ret != GST_STATE_CHANGE_SUCCESS) + if (ret == GST_STATE_CHANGE_FAILURE) return ret; break; } @@ -887,10 +887,14 @@ gst_dshowvideosink_change_state (GstElement * element, GstStateChange transition switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: - ret = gst_dshowvideosink_pause_graph (sink); + rettmp = gst_dshowvideosink_pause_graph (sink); + if (rettmp == GST_STATE_CHANGE_FAILURE) + ret = rettmp; break; case GST_STATE_CHANGE_PAUSED_TO_READY: - ret = gst_dshowvideosink_stop_graph (sink); + rettmp = gst_dshowvideosink_stop_graph (sink); + if (rettmp == GST_STATE_CHANGE_FAILURE) + ret = rettmp; break; case GST_STATE_CHANGE_READY_TO_NULL: gst_dshowvideosink_clear (sink); -- cgit v1.2.1