summaryrefslogtreecommitdiffstats
path: root/src/gsttools
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2012-04-20 11:32:59 +1000
committerQt by Nokia <qt-info@nokia.com>2012-04-20 08:47:32 +0200
commite2f5779d2a918942d61e4ebf2acdc2ae5a97b5de (patch)
treeec74ac6dcdb1e166c76e2f2f28a8f1812e5b24cd /src/gsttools
parentc4cd9e711dbf52b8fbb0ebc563f33b440e5d88d6 (diff)
gst player: clear the buffer pool when the video sink is stopped
Buffers were kept allocated until the player is destroyed or next media played. Change-Id: I8a0c85da3a82ac6883075a1d0674143783c7f010 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src/gsttools')
-rw-r--r--src/gsttools/qvideosurfacegstsink.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gsttools/qvideosurfacegstsink.cpp b/src/gsttools/qvideosurfacegstsink.cpp
index 6347582a3..7f61a68e8 100644
--- a/src/gsttools/qvideosurfacegstsink.cpp
+++ b/src/gsttools/qvideosurfacegstsink.cpp
@@ -176,6 +176,13 @@ bool QVideoSurfaceGstDelegate::isActive()
return !m_surface.isNull() && m_surface->isActive();
}
+void QVideoSurfaceGstDelegate::clearPoolBuffers()
+{
+ QMutexLocker locker(&m_poolMutex);
+ if (m_pool)
+ m_pool->clear();
+}
+
GstFlowReturn QVideoSurfaceGstDelegate::render(GstBuffer *buffer)
{
if (!m_surface) {
@@ -840,7 +847,8 @@ gboolean QVideoSurfaceGstSink::start(GstBaseSink *base)
gboolean QVideoSurfaceGstSink::stop(GstBaseSink *base)
{
- Q_UNUSED(base);
+ VO_SINK(base);
+ sink->delegate->clearPoolBuffers();
return TRUE;
}