slomo pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=072e0bbafd761ad4d3ec882f13adc76f523b98e8
commit 072e0bbafd761ad4d3ec882f13adc76f523b98e8 Author: Sebastian Dröge <[email protected]> Date: Sun Jan 12 12:59:03 2014 +0100 emotion gstreamer1: Some code re-flow in the GStreamer bus handler --- src/modules/emotion/gstreamer1/emotion_gstreamer.c | 54 +++++++++++----------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/modules/emotion/gstreamer1/emotion_gstreamer.c b/src/modules/emotion/gstreamer1/emotion_gstreamer.c index 961ade0..f055a87 100644 --- a/src/modules/emotion/gstreamer1/emotion_gstreamer.c +++ b/src/modules/emotion/gstreamer1/emotion_gstreamer.c @@ -1339,32 +1339,36 @@ _bus_main_handler(void *data) ev = send->ev; msg = send->msg; + /* Just exit immediately if we're shutting down */ + if (ev->shutdown) + { + emotion_gstreamer_message_free(send); + _emotion_pending_ecore_end(); + return; + } + switch (GST_MESSAGE_TYPE(msg)) { case GST_MESSAGE_EOS: - if (!ev->shutdown) - { - ev->play = 0; - _emotion_decode_stop(ev->obj); - _emotion_playback_finished(ev->obj); - } + ev->play = 0; + _emotion_decode_stop(ev->obj); + _emotion_playback_finished(ev->obj); break; case GST_MESSAGE_TAG: - if (!ev->shutdown) - { - GstTagList *new_tags; - gst_message_parse_tag(msg, &new_tags); - if (new_tags) - { - gst_tag_list_foreach(new_tags, - (GstTagForeachFunc)_for_each_tag, - ev); - gst_tag_list_free(new_tags); - } - } - break; + { + GstTagList *new_tags; + gst_message_parse_tag(msg, &new_tags); + if (new_tags) + { + gst_tag_list_foreach(new_tags, + (GstTagForeachFunc)_for_each_tag, + ev); + gst_tag_list_free(new_tags); + } + break; + } case GST_MESSAGE_ASYNC_DONE: - if (!ev->shutdown) _emotion_seek_done(ev->obj); + _emotion_seek_done(ev->obj); break; case GST_MESSAGE_STATE_CHANGED: { @@ -1376,15 +1380,11 @@ _bus_main_handler(void *data) gst_element_state_get_name(old_state), gst_element_state_get_name(new_state)); - if (GST_MESSAGE_SRC(msg) == GST_OBJECT(ev->pipeline) && new_state >= GST_STATE_PAUSED && !ev->play_started && !ev->shutdown) + if (GST_MESSAGE_SRC(msg) == GST_OBJECT(ev->pipeline) && new_state >= GST_STATE_PAUSED && !ev->play_started) { + ev->play_started = 1; _emotion_gstreamer_video_pipeline_parse(ev, EINA_TRUE); - /* FIXME: This is reentrant because of _emotion_open_done() */ - if (!ev->play_started) - { - _emotion_playback_started(ev->obj); - ev->play_started = 1; - } + _emotion_playback_started(ev->obj); } break; } --
