summaryrefslogtreecommitdiffstats
path: root/examples/widgets/painting
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-01 15:05:29 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-11-07 12:26:03 +0000
commit6d255b467becad5b5ffebbfa1d13e16b2dd20a64 (patch)
tree5b4fc84baf3645fc610e75738270b46784d8098d /examples/widgets/painting
parentd786c55b9e03c3cb8444ebeef8d31ca9d84071a0 (diff)
Fix composition example during OpenGL resizes
Previous images were sometimes not cleared correctly. Change-Id: I62949b756bf797aa79c5160774f2f258e5c353dd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'examples/widgets/painting')
-rw-r--r--examples/widgets/painting/composition/composition.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/examples/widgets/painting/composition/composition.cpp b/examples/widgets/painting/composition/composition.cpp
index 3bc31b1fce..e0abc5875c 100644
--- a/examples/widgets/painting/composition/composition.cpp
+++ b/examples/widgets/painting/composition/composition.cpp
@@ -358,10 +358,10 @@ void CompositionRenderer::paint(QPainter *painter)
m_blitter.create();
int new_pbuf_size = m_pbuffer_size;
- if (size().width() > m_pbuffer_size || size().height() > m_pbuffer_size)
+ while (size().width() > new_pbuf_size || size().height() > new_pbuf_size)
new_pbuf_size *= 2;
- if (size().width() < m_pbuffer_size/2 && size().height() < m_pbuffer_size/2)
+ while (size().width() < new_pbuf_size/2 && size().height() < new_pbuf_size/2)
new_pbuf_size /= 2;
if (!m_fbo || new_pbuf_size != m_pbuffer_size) {
@@ -372,6 +372,9 @@ void CompositionRenderer::paint(QPainter *painter)
if (size() != m_previous_size) {
m_previous_size = size();
QPainter p(m_fbo.data());
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(QRect(QPoint(0, 0), size()), Qt::transparent);
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
drawBase(p);
p.end();
m_base_tex = m_fbo->takeTexture();