[PATCH 4/4] Cygwin/X: Avoid a visual glitch on window move in rootless modes

Jon TURNEY jon.turney at dronecode.org.uk
Wed Jun 24 13:15:28 PDT 2009


Handle and ignore WM_ERASEBKGND since we repaint the entire invalidated region anyhow
(this avoids a white flickering on window resize)

Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
---
 hw/xwin/winmultiwindowwndproc.c   |    8 ++++++++
 hw/xwin/winwin32rootlesswndproc.c |   11 +++++++++++
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/hw/xwin/winmultiwindowwndproc.c b/hw/xwin/winmultiwindowwndproc.c
index bd9edcb..3138229 100644
--- a/hw/xwin/winmultiwindowwndproc.c
+++ b/hw/xwin/winmultiwindowwndproc.c
@@ -453,6 +453,14 @@ winTopLevelWindowProc (HWND hwnd, UINT message,
       HandleCustomWM_INITMENU ((unsigned long)hwnd, wParam);
       break;
 
+    case WM_ERASEBKGND:
+      /*
+       * Pretend that we did erase the background but we don't care,
+       * since we repaint the entire region anyhow
+       * This avoids some flickering when resizing.
+       */
+      return TRUE;
+
     case WM_PAINT:
       /* Only paint if our window handle is valid */
       if (hwndScreen == NULL)
diff --git a/hw/xwin/winwin32rootlesswndproc.c b/hw/xwin/winwin32rootlesswndproc.c
index e624ded..4d7afee 100755
--- a/hw/xwin/winwin32rootlesswndproc.c
+++ b/hw/xwin/winwin32rootlesswndproc.c
@@ -783,6 +783,17 @@ winMWExtWMWindowProc (HWND hwnd, UINT message,
       SendMessage (hwndScreen, message, wParam, lParam);
       return 0;
 
+    case WM_ERASEBKGND:
+#if CYGDEBUG
+      winDebug ("winMWExtWMWindowProc - WM_ERASEBKGND\n");
+#endif
+      /*
+       * Pretend that we did erase the background but we don't care,
+       * since we repaint the entire region anyhow
+       * This avoids some flickering when resizing.
+       */
+      return TRUE;
+
     case WM_PAINT:
     
       /* BeginPaint gives us an hdc that clips to the invalidated region */
-- 
1.6.1.2



More information about the xorg-devel mailing list