summaryrefslogtreecommitdiffstats
path: root/src/gsttools
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsttools')
-rw-r--r--src/gsttools/qgstvideorenderersink.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/gsttools/qgstvideorenderersink.cpp b/src/gsttools/qgstvideorenderersink.cpp
index e44379220..615348c14 100644
--- a/src/gsttools/qgstvideorenderersink.cpp
+++ b/src/gsttools/qgstvideorenderersink.cpp
@@ -300,8 +300,11 @@ bool QVideoSurfaceGstDelegate::handleEvent(QMutexLocker *locker)
gst_caps_unref(startCaps);
} else if (m_renderBuffer) {
+ GstBuffer *buffer = m_renderBuffer;
+ m_renderBuffer = 0;
+ m_renderReturn = GST_FLOW_ERROR;
+
if (m_activeRenderer && m_surface) {
- GstBuffer *buffer = m_renderBuffer;
gst_buffer_ref(buffer);
locker->unlock();
@@ -312,15 +315,11 @@ bool QVideoSurfaceGstDelegate::handleEvent(QMutexLocker *locker)
locker->relock();
- m_renderReturn = rendered
- ? GST_FLOW_OK
- : GST_FLOW_ERROR;
-
- m_renderCondition.wakeAll();
- } else {
- m_renderReturn = GST_FLOW_ERROR;
- m_renderCondition.wakeAll();
+ if (rendered)
+ m_renderReturn = GST_FLOW_OK;
}
+
+ m_renderCondition.wakeAll();
} else {
m_setupCondition.wakeAll();