summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@theqtcompany.com>2015-07-01 12:15:36 +0300
committerMiikka Heikkinen <miikka.heikkinen@theqtcompany.com>2015-07-01 11:31:13 +0000
commit0cf70048865a1a76894c2a8a0e40a5ee90dbf608 (patch)
tree4d86e537dc57b55f8a8540b8bf4d0fbad4739fdb
parentb4f7a8f1dad97d554210e254a907387dd43a76bd (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.cpp5
-rw-r--r--src/imports/qtcanvas3d/canvasrenderer.cpp6
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;
}
/*!