From 34d0cd1e65644970d890e52bd3c880fc941d99f9 Mon Sep 17 00:00:00 2001
From: Michael Dominic K <mdk@codethink.co.uk>
Date: Fri, 27 Aug 2010 09:28:40 +0200
Subject: Clear the QGLWindowSurface in ::beginPaint when needed.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Merge-request: 2462
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
---
 src/opengl/qwindowsurface_gl.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp
index b86fb78..d602000 100644
--- a/src/opengl/qwindowsurface_gl.cpp
+++ b/src/opengl/qwindowsurface_gl.cpp
@@ -426,6 +426,20 @@ static void drawTexture(const QRectF &rect, GLuint tex_id, const QSize &texSize,
 
 void QGLWindowSurface::beginPaint(const QRegion &)
 {
+    if (! context())
+        return;
+
+    int clearFlags = 0;
+
+    if (context()->d_func()->workaround_needsFullClearOnEveryFrame)
+        clearFlags = GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT;
+    else if (context()->format().alpha())
+        clearFlags = GL_COLOR_BUFFER_BIT;
+
+    if (clearFlags) {
+        glClearColor(0.0, 0.0, 0.0, 0.0);
+        glClear(clearFlags);
+    }
 }
 
 void QGLWindowSurface::endPaint(const QRegion &rgn)
-- 
cgit v0.12