ANGLE: Invalidate client window area when resetting swap chain
authorJonathan Liu <net147@gmail.com>
Thu, 15 Nov 2012 08:50:54 +0000 (19:50 +1100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 15 Nov 2012 09:54:21 +0000 (10:54 +0100)
Resizing a window larger results in the newly exposed region being
invalidated but the old region is treated as valid. This can result in
the old region no longer updating. This has been observed on Windows 7
64-bit with Aero theme using NVIDIA GeForce GTS 250 and driver version
301.42. Invalidate the entire client window area when resetting the
swap chain so that it updates properly.

Upstream patch: https://codereview.appspot.com/6812076/

Task-number: QTBUG-27822
Change-Id: I0f5d2004576019458baee74c35e52f69b893a219
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
src/3rdparty/angle/AUTHORS
src/3rdparty/angle/src/libEGL/Surface.cpp

index 0294632..10e60d8 100644 (file)
@@ -24,6 +24,7 @@ Ginn Chen
 James Hauxwell
 Sam Hocevar
 Pierre Leveille
+Jonathan Liu
 Boying Lu
 Aitor Moreno
 Yuri O'Donnell
index 34df14c..8e920ab 100644 (file)
@@ -326,6 +326,7 @@ bool Surface::resetSwapChain(int backbufferWidth, int backbufferHeight)
 
         result = mSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &mBackBuffer);
         ASSERT(SUCCEEDED(result));
+        InvalidateRect(mWindow, NULL, FALSE);
     }
 
     if (mConfig->mDepthStencilFormat != D3DFMT_UNKNOWN)