summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSvenn-Arne Dragly <s@dragly.com>2018-04-18 12:37:22 +0200
committerPaul Lemire <paul.lemire@kdab.com>2018-04-18 11:17:22 +0000
commit5eaa6dae7eccd6519149dd9869fe1fae9f73bc10 (patch)
tree04c9e94151fcd2b08454d3c3849b81838415a29b
parent6d73c51d44d10925a05804cd8e70978f155643df (diff)
downloadqt3d-5eaa6dae7eccd6519149dd9869fe1fae9f73bc10.tar.gz
Make sure we could lock the surface before querying its size
The surface is a frontend object that might be destroyed before we try to access it in jobs that query its size using RenderSurfaceSelector::renderTargetSize(). This change makes sure we have a valid lock on the surface before querying its size. Co-authored-by: Paul Lemire <paul.lemire@kdab.com> Task-number: QTBUG-67789 Change-Id: Id7eaee999ad3a7040955f7497a959a2989b99501 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/framegraph/rendersurfaceselector.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/render/framegraph/rendersurfaceselector.cpp b/src/render/framegraph/rendersurfaceselector.cpp
index 2a424a2cf..7f2fd6170 100644
--- a/src/render/framegraph/rendersurfaceselector.cpp
+++ b/src/render/framegraph/rendersurfaceselector.cpp
@@ -120,8 +120,11 @@ QSize RenderSurfaceSelector::renderTargetSize() const
{
if (m_renderTargetSize.isValid())
return m_renderTargetSize;
- if (m_surface && m_surface->size().isValid())
- return m_surface->size();
+ {
+ SurfaceLocker lock(m_surface);
+ if (lock.isSurfaceValid() && m_surface && m_surface->size().isValid())
+ return m_surface->size();
+ }
return QSize();
}