1*4882a593SmuzhiyunFrom cf48f25dffc0a86840bcf6ad36242f66679cdbb5 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Wed, 26 Dec 2018 17:51:51 +0800 4*4882a593SmuzhiyunSubject: [PATCH 07/17] gstreamer: mediaplayer: Fix hangs when replacing paused 5*4882a593Smuzhiyun video sink 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 8*4882a593Smuzhiyun--- 9*4882a593Smuzhiyun src/gsttools/qgstreamerplayersession.cpp | 5 +++++ 10*4882a593Smuzhiyun 1 file changed, 5 insertions(+) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundiff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp 13*4882a593Smuzhiyunindex 98b7ffb..76282bc 100755 14*4882a593Smuzhiyun--- a/src/gsttools/qgstreamerplayersession.cpp 15*4882a593Smuzhiyun+++ b/src/gsttools/qgstreamerplayersession.cpp 16*4882a593Smuzhiyun@@ -801,6 +801,11 @@ void QGstreamerPlayerSession::setVideoRenderer(QObject *videoOutput) 17*4882a593Smuzhiyun //while the sink is paused. The pad will be blocked as soon as the current 18*4882a593Smuzhiyun //buffer is processed. 19*4882a593Smuzhiyun if (m_state == QMediaPlayer::PausedState) { 20*4882a593Smuzhiyun+ if (!m_everPlayed) { 21*4882a593Smuzhiyun+ finishVideoOutputChange(); 22*4882a593Smuzhiyun+ seek(m_lastPosition); 23*4882a593Smuzhiyun+ } 24*4882a593Smuzhiyun+ 25*4882a593Smuzhiyun #ifdef DEBUG_PLAYBIN 26*4882a593Smuzhiyun qDebug() << "Starting video output to avoid blocking in paused state..."; 27*4882a593Smuzhiyun #endif 28*4882a593Smuzhiyun-- 29*4882a593Smuzhiyun2.20.1 30*4882a593Smuzhiyun 31