diff options
author | Miikka Heikkinen <miikka.heikkinen@theqtcompany.com> | 2015-07-01 12:15:36 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@theqtcompany.com> | 2015-07-01 11:31:13 +0000 |
commit | 0cf70048865a1a76894c2a8a0e40a5ee90dbf608 (patch) | |
tree | 4d86e537dc57b55f8a8540b8bf4d0fbad4739fdb | |
parent | b4f7a8f1dad97d554210e254a907387dd43a76bd (diff) |
Fix two GL errors and warnings related to resizingwip/threading
Resizing window so that canvas height is zero shouldn't attempt
to recreate framebuffers, as it will fail. We can just draw to
the old framebuffers in those cases.
Another GL error happened when rapidly resizing the window,
as main thread directly adjusted the renderer FBO size.
Moved the adjustment to the sync() method.
Change-Id: Ib35c8439057d52e64186c7321208bb61ae94f58d
Reviewed-by: Tomi KorpipÀÀ <tomi.korpipaa@theqtcompany.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
-rw-r--r-- | src/imports/qtcanvas3d/canvas3d.cpp | 5 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/canvasrenderer.cpp | 6 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/imports/qtcanvas3d/canvas3d.cpp b/src/imports/qtcanvas3d/canvas3d.cpp index b4a440e..412bdac 100644 --- a/src/imports/qtcanvas3d/canvas3d.cpp +++ b/src/imports/qtcanvas3d/canvas3d.cpp @@ -494,9 +494,6 @@ void Canvas::setPixelSize(QSize pixelSize) pixelSize.setHeight(m_maxSize.height()); } - if (m_renderer) - m_renderer->setFboSize(pixelSize); - if (m_fboSize == pixelSize) return; @@ -592,6 +589,8 @@ void Canvas::sync() { qCDebug(canvas3drendering).nospace() << "Canvas3D::" << __FUNCTION__ << "()"; + m_renderer->setFboSize(m_fboSize); + // Update execution queue (GUI thread is locked here) m_renderer->transferCommands(); diff --git a/src/imports/qtcanvas3d/canvasrenderer.cpp b/src/imports/qtcanvas3d/canvasrenderer.cpp index 377faf6..3efb809 100644 --- a/src/imports/qtcanvas3d/canvasrenderer.cpp +++ b/src/imports/qtcanvas3d/canvasrenderer.cpp @@ -464,7 +464,6 @@ void CanvasRenderer::render() clearBackground(); } - // Skip render if there is no context or nothing to render if (m_glContext && m_executeQueueCount) { // Update tracked quick item textures @@ -577,7 +576,10 @@ void CanvasRenderer::setFboSize(const QSize &fboSize) return; m_fboSize = fboSize; - m_recreateFbos = true; + if (m_fboSize.width() > 0 && m_fboSize.height() > 0) + m_recreateFbos = true; + else + m_recreateFbos = false; } /*! |