We do not require a reference here, as the texture is only bound
once. It is the texture factory that is reused (when
QQuickWIndow::setPersistentSceneGraph(false) is set and the window
is hidden and then re-exposed). With this patch it becomes trivial to
create a custom QSGContextPlugin with a texture factory that does
not retain the QImage, freeing up memory. This is useful in the
case of an embedded system with only a single window that
is never hidden or re-exposed.
Change-Id: I1cfa6efc3a2e9e641b456bf90c55d563061757b8
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
QSGPainterTexture::QSGPainterTexture()
: QSGPlainTexture()
{
-
+ m_retain_image = true;
}
#ifdef QT_OPENGL_ES
, m_dirty_bind_options(false)
, m_owns_texture(true)
, m_mipmaps_generated(false)
+ , m_retain_image(false)
{
}
m_texture_rect = QRectF(0, 0, 1, 1);
m_dirty_bind_options = false;
+ if (!m_retain_image)
+ m_image = QImage();
}
uint m_dirty_bind_options : 1;
uint m_owns_texture : 1;
uint m_mipmaps_generated : 1;
+ uint m_retain_image: 1;
};
QT_END_NAMESPACE