From 96eccdfabf5c3019fb46f2ec9076cdc241686ff4 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Mon, 13 Feb 2012 20:49:25 +0000 Subject: [PATCH] When receiving a buffering message, do the pipeline state change in a different thread to avoid a deadlock with the main thread when the user is seeking. Fixes issue 2709 --- src/engines/gstenginepipeline.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 76daf747f..77552c99d 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -589,12 +589,12 @@ void GstEnginePipeline::BufferingMessageReceived(GstMessage* msg) { buffering_ = true; emit BufferingStarted(); - gst_element_set_state(pipeline_, GST_STATE_PAUSED); + SetState(GST_STATE_PAUSED); } else if (percent == 100 && buffering_) { buffering_ = false; emit BufferingFinished(); - gst_element_set_state(pipeline_, GST_STATE_PLAYING); + SetState(GST_STATE_PLAYING); } else if (buffering_) { emit BufferingProgress(percent); }