From 0c95f7c234c108e050031fc2504effa90869d04d Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 26 Sep 2010 20:59:41 +0000 Subject: [PATCH] Safeguard against a null pipeline in GstEngine::Play. --- src/engines/enginebase.cpp | 6 ++++++ src/engines/enginebase.h | 2 +- src/engines/gstengine.cpp | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/engines/enginebase.cpp b/src/engines/enginebase.cpp index 2e0576e79..e0246826b 100644 --- a/src/engines/enginebase.cpp +++ b/src/engines/enginebase.cpp @@ -78,3 +78,9 @@ void Engine::Base::EmitAboutToEnd() { int Engine::Base::AddBackgroundStream(const QUrl& url) { return -1; } + +bool Engine::Base::Play(const QUrl& u, TrackChangeType c) { + if (!Load(u, c)) + return false; + return Play(); +} diff --git a/src/engines/enginebase.h b/src/engines/enginebase.h index a4a2d8f2a..13553e0f9 100644 --- a/src/engines/enginebase.h +++ b/src/engines/enginebase.h @@ -61,7 +61,7 @@ class Base : public QObject, boost::noncopyable { // Helpers virtual bool Load(const QUrl &url, TrackChangeType change); - bool Play(const QUrl &u, TrackChangeType c) { return Load(u, c) && Play(); } + bool Play(const QUrl &u, TrackChangeType c); void SetVolume( uint value ); diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp index 37cac26ec..0c3ef8247 100644 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -496,6 +496,9 @@ void GstEngine::StartFadeout() { bool GstEngine::Play( uint offset ) { EnsureInitialised(); + if (!current_pipeline_) + return false; + QFuture future = current_pipeline_->SetState(GST_STATE_PLAYING); BoundFutureWatcher* watcher = new BoundFutureWatcher(offset, this);