summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandquicksurface.cpp
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-10-31 11:14:15 +0200
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-11-10 19:37:49 +0100
commitf2ed856a541623b7564e0805fc7b3f868d17e200 (patch)
tree24f261c749cba9077b4feb61622ccc277cf81d32 /src/compositor/compositor_api/qwaylandquicksurface.cpp
parent7882407bb6bab6c042fd20592a63a875b74eb581 (diff)
Make sure to have valid textures
The texture of QWaylandSurfaceItem's texture provider was updated in QWaylandSurfaceItem::updatePaintNode(). That is fine as long as the texture is accessed after the updatePaintNode() call, but if not we would access an invalid texture. That could happen when another QQuickItem subclass was accessing the textire in its updatePaintNode(). We don't have any guarantee on the order of the updatePaintNode() calls, so the other item could be updated before the QWaylandSurfaceItem. Change-Id: I7320d445c72796ce26f8d8483175a35e9c6840e7 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandquicksurface.cpp')
-rw-r--r--src/compositor/compositor_api/qwaylandquicksurface.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandquicksurface.cpp b/src/compositor/compositor_api/qwaylandquicksurface.cpp
index ae3dfbb5d..166514f73 100644
--- a/src/compositor/compositor_api/qwaylandquicksurface.cpp
+++ b/src/compositor/compositor_api/qwaylandquicksurface.cpp
@@ -212,12 +212,16 @@ void QWaylandQuickSurface::updateTexture()
Q_D(QWaylandQuickSurface);
if (d->buffer->update)
d->buffer->createTexture();
+ foreach (QWaylandSurfaceView *view, views())
+ static_cast<QWaylandSurfaceItem *>(view)->updateTexture();
}
void QWaylandQuickSurface::invalidateTexture()
{
Q_D(QWaylandQuickSurface);
d->buffer->invalidateTexture();
+ foreach (QWaylandSurfaceView *view, views())
+ static_cast<QWaylandSurfaceItem *>(view)->updateTexture();
}
bool QWaylandQuickSurface::clientRenderingEnabled() const