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>
This commit is contained in:
Dmytro Poplavskiy
2012-04-20 11:32:59 +10:00
committed by Qt by Nokia
parent c4cd9e711d
commit e2f5779d2a
2 changed files with 10 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -94,6 +94,7 @@ public:
QGstBufferPoolInterface *pool() { return m_pool; }
QMutex *poolMutex() { return &m_poolMutex; }
void clearPoolBuffers();
GstFlowReturn render(GstBuffer *buffer);