diff options
Diffstat (limited to 'src/gsttools')
-rw-r--r-- | src/gsttools/qgstvideorenderersink.cpp | 17 |
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(); |