Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
4912e62d by Fatih Uzunoglu at 2026-05-08T03:42:41+00:00
qt: handle if provider is destroyed in `TextureProviderObserver`
This is very unlikely, but still better to have it.
- - - - -
b40fef60 by Fatih Uzunoglu at 2026-05-08T03:42:41+00:00
qt: add note regarding source texture provider in `TextureProviderIndirection`
- - - - -
3 changed files:
- modules/gui/qt/util/textureproviderindirection.hpp
- modules/gui/qt/util/textureproviderobserver.cpp
- modules/gui/qt/util/textureproviderobserver.hpp
Changes:
=====================================
modules/gui/qt/util/textureproviderindirection.hpp
=====================================
@@ -57,6 +57,8 @@ class TextureProviderIndirection : public QQuickItem
{
Q_OBJECT
+ // NOTE: source must be a texture provider item.
+ // NOTE: If source's texture provider changes, it is required to re-set
the property.
Q_PROPERTY(const QQuickItem* source MEMBER m_source NOTIFY sourceChanged
FINAL)
// NOTE: Although this is named as `textureSubRect`, it is allowed to
provide a larger size than
// the texture size. In that case, the texture's wrap mode is going
to be relevant, provided
=====================================
modules/gui/qt/util/textureproviderobserver.cpp
=====================================
@@ -129,6 +129,14 @@ void TextureProviderObserver::setSource(const QQuickItem
*source, bool enforce)
connect(m_provider, &QSGTextureProvider::textureChanged, this,
&TextureProviderObserver::updateProperties, Qt::DirectConnection);
+ // `QQuickItem` does not signal if it would have a new texture
provider, so we simply set the source to null instead.
+ // We probably don't need to do the same for `m_source`,
because if it is destroyed, the property should be updated
+ // instead, which in QML side is assumed to be done
implicitly. Note that this is unlikely and no item does that,
+ // but it is still better to have this:
+ connect(m_provider, &QObject::destroyed, this, [this]() {
+ setSource(nullptr); // This also implicitly calls
`resetProperties()`.
+ });
+
updateProperties();
}, static_cast<Qt::ConnectionType>(Qt::SingleShotConnection |
Qt::DirectConnection));
};
=====================================
modules/gui/qt/util/textureproviderobserver.hpp
=====================================
@@ -33,6 +33,7 @@ class TextureProviderObserver : public QObject
Q_OBJECT
// NOTE: source must be a texture provider item.
+ // NOTE: If source's texture provider changes, it is required to re-set
the property.
Q_PROPERTY(const QQuickItem* source MEMBER m_source WRITE setSource NOTIFY
sourceChanged FINAL)
// WARNING: Texture properties are updated in the rendering thread.
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/32d35ba1caf94055b98465555d591abe6bfb4390...b40fef60bb042165f96d48be67f476cbf99c84a4
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/32d35ba1caf94055b98465555d591abe6bfb4390...b40fef60bb042165f96d48be67f476cbf99c84a4
You're receiving this email because of your account on code.videolan.org.
_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits