diff options
author | Svenn-Arne Dragly <s@dragly.com> | 2018-04-18 12:37:22 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2018-04-18 11:17:22 +0000 |
commit | 5eaa6dae7eccd6519149dd9869fe1fae9f73bc10 (patch) | |
tree | 04c9e94151fcd2b08454d3c3849b81838415a29b | |
parent | 6d73c51d44d10925a05804cd8e70978f155643df (diff) | |
download | qt3d-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.cpp | 7 |
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(); } |