From 6d255b467becad5b5ffebbfa1d13e16b2dd20a64 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 1 Nov 2018 15:05:29 +0100 Subject: Fix composition example during OpenGL resizes Previous images were sometimes not cleared correctly. Change-Id: I62949b756bf797aa79c5160774f2f258e5c353dd Reviewed-by: Friedemann Kleint Reviewed-by: Laszlo Agocs --- examples/widgets/painting/composition/composition.cpp | 7 +++++-- 1 file 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(); -- cgit v1.2.3