diff options
Diffstat (limited to 'src/platformsupport/eglconvenience/qeglplatformbackingstore.cpp')
-rw-r--r-- | src/platformsupport/eglconvenience/qeglplatformbackingstore.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/platformsupport/eglconvenience/qeglplatformbackingstore.cpp b/src/platformsupport/eglconvenience/qeglplatformbackingstore.cpp index ab92bac37d..3cb31e36ec 100644 --- a/src/platformsupport/eglconvenience/qeglplatformbackingstore.cpp +++ b/src/platformsupport/eglconvenience/qeglplatformbackingstore.cpp @@ -41,6 +41,7 @@ #include <QtGui/QOpenGLShaderProgram> #include <QtGui/QOpenGLContext> +#include <QtGui/QPainter> #include "qeglplatformbackingstore_p.h" #include "qeglcompositor_p.h" @@ -209,9 +210,16 @@ void QEGLPlatformBackingStore::composited() } } -void QEGLPlatformBackingStore::beginPaint(const QRegion &rgn) +void QEGLPlatformBackingStore::beginPaint(const QRegion ®ion) { - m_dirty |= rgn; + m_dirty |= region; + + if (m_image.hasAlphaChannel()) { + QPainter p(&m_image); + p.setCompositionMode(QPainter::CompositionMode_Source); + foreach (const QRect &r, region.rects()) + p.fillRect(r, Qt::transparent); + } } void QEGLPlatformBackingStore::resize(const QSize &size, const QRegion &staticContents) @@ -223,7 +231,8 @@ void QEGLPlatformBackingStore::resize(const QSize &size, const QRegion &staticCo if (!dstWin || (!dstWin->isRaster() && dstWin->window()->surfaceType() != QSurface::RasterGLSurface)) return; - m_image = QImage(size, QImage::Format_RGB32); + m_image = QImage(size, QImage::Format_RGBA8888); + m_window->create(); screen->compositingContext()->makeCurrent(dstWin->window()); |