From ec52aeb558fb50a7ed2022e73584b8bc1410ce75 Mon Sep 17 00:00:00 2001 From: SeeSpotRun Date: Thu, 25 Feb 2016 12:23:06 +1000 Subject: [PATCH] audio: be more tolerant of gstreamer states and order. Fix #1453 --- mopidy/audio/scan.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mopidy/audio/scan.py b/mopidy/audio/scan.py index c63405b0f0..dd1dd78d28 100644 --- a/mopidy/audio/scan.py +++ b/mopidy/audio/scan.py @@ -134,6 +134,10 @@ def _start_pipeline(pipeline): result = pipeline.set_state(Gst.State.PAUSED) if result == Gst.StateChangeReturn.NO_PREROLL: pipeline.set_state(Gst.State.PLAYING) + elif result == Gst.StateChangeReturn.ASYNC: + # TODO: should probably have error check here like + # https://cgit.freedesktop.org/gstreamer/gstreamer/tree/tools/gst-launch.c#n1075 ?? + pipeline.set_state(Gst.State.PLAYING) def _query_duration(pipeline, timeout=100): @@ -210,7 +214,7 @@ def _process(pipeline, timeout_ms): elif message.type == Gst.MessageType.EOS: return tags, mime, have_audio elif message.type == Gst.MessageType.ASYNC_DONE: - if message.src == pipeline: + if message.src == pipeline and tags: return tags, mime, have_audio elif message.type == Gst.MessageType.TAG: taglist = message.parse_tag()