diff options
-rw-r--r-- | ext/qt/qtitem.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc index bc99639b4..8384a629a 100644 --- a/ext/qt/qtitem.cc +++ b/ext/qt/qtitem.cc @@ -133,6 +133,8 @@ QtGLVideoItem::QtGLVideoItem() QtGLVideoItem::~QtGLVideoItem() { + GstBuffer *tmp_buffer; + /* Before destroying the priv info, make sure * no qmlglsink's will call in again, and that * any ongoing calls are done by invalidating the proxy @@ -149,6 +151,15 @@ QtGLVideoItem::~QtGLVideoItem() if (this->priv->display) gst_object_unref(this->priv->display); + while ((tmp_buffer = (GstBuffer*) g_queue_pop_head (&this->priv->potentially_unbound_buffers))) { + GST_TRACE ("old buffer %p should be unbound now, unreffing", tmp_buffer); + gst_buffer_unref (tmp_buffer); + } + while ((tmp_buffer = (GstBuffer*) g_queue_pop_head (&this->priv->bound_buffers))) { + GST_TRACE ("old buffer %p should be unbound now, unreffing", tmp_buffer); + gst_buffer_unref (tmp_buffer); + } + gst_buffer_replace (&this->priv->buffer, NULL); gst_caps_replace (&this->priv->caps, NULL); |