diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2012-04-20 11:32:59 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-20 08:47:32 +0200 |
commit | e2f5779d2a918942d61e4ebf2acdc2ae5a97b5de (patch) | |
tree | ec74ac6dcdb1e166c76e2f2f28a8f1812e5b24cd /src | |
parent | c4cd9e711dbf52b8fbb0ebc563f33b440e5d88d6 (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')
-rw-r--r-- | src/gsttools/qvideosurfacegstsink.cpp | 10 | ||||
-rw-r--r-- | src/multimedia/gsttools_headers/qvideosurfacegstsink_p.h | 1 |
2 files changed, 10 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; } diff --git a/src/multimedia/gsttools_headers/qvideosurfacegstsink_p.h b/src/multimedia/gsttools_headers/qvideosurfacegstsink_p.h index 6ee6907ab..c87db3aad 100644 --- a/src/multimedia/gsttools_headers/qvideosurfacegstsink_p.h +++ b/src/multimedia/gsttools_headers/qvideosurfacegstsink_p.h @@ -94,6 +94,7 @@ public: QGstBufferPoolInterface *pool() { return m_pool; } QMutex *poolMutex() { return &m_poolMutex; } + void clearPoolBuffers(); GstFlowReturn render(GstBuffer *buffer); |