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