qml, qml6: Fix leak of QSGMaterial/Geometry (and therefore a possible GstBuffer)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>
This commit is contained in:
Matthew Waters 2024-02-21 19:09:20 +11:00 committed by Tim-Philipp Müller
parent 2dae3775d9
commit 392fd00f4c
2 changed files with 4 additions and 0 deletions

View file

@ -314,8 +314,10 @@ QtGLVideoItem::updatePaintNode(QSGNode * oldNode,
texNode = new QSGGeometryNode();
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4);
texNode->setGeometry(geometry);
texNode->setFlag(QSGGeometryNode::Flag::OwnsGeometry);
tex = GstQSGMaterial::new_for_format(GST_VIDEO_INFO_FORMAT (&this->priv->v_info));
texNode->setMaterial(tex);
texNode->setFlag(QSGGeometryNode::Flag::OwnsMaterial);
}
if ((old_buffer = tex->getBuffer(&was_bound))) {

View file

@ -309,10 +309,12 @@ Qt6GLVideoItem::updatePaintNode(QSGNode * oldNode,
texNode = new QSGGeometryNode();
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4);
texNode->setGeometry(geometry);
texNode->setFlag(QSGGeometryNode::OwnsGeometry);
tex = GstQSGMaterial::new_for_format(GST_VIDEO_INFO_FORMAT (&this->priv->v_info));
tex->setFiltering(is_smooth ? QSGTexture::Filtering::Linear :
QSGTexture::Filtering::Nearest);
texNode->setMaterial(tex);
texNode->setFlag(QSGGeometryNode::OwnsMaterial);
}
if ((old_buffer = tex->getBuffer(&was_bound))) {