st/wgl: Prevent spurious framebuffer sizes when the window is minimized.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 7 Apr 2011 18:15:55 +0000 (19:15 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Tue, 12 Apr 2011 11:00:49 +0000 (12:00 +0100)
When the window is minimized GetClientRect will return zeros.

Instead of creating a 1x1 framebuffer, simply preserve the current window
size, until the window is restored or maximized again.

src/gallium/state_trackers/wgl/stw_framebuffer.c

index 670e542cb4fcf44997509f671648e2f0dc592382..d8b1440a688d089f6469bcdb2916025eacecc5c2 100644 (file)
@@ -112,7 +112,7 @@ stw_framebuffer_release(
 static INLINE void
 stw_framebuffer_get_size( struct stw_framebuffer *fb )
 {
-   unsigned width, height;
+   LONG width, height;
    RECT client_rect;
    RECT window_rect;
    POINT client_pos;
@@ -126,10 +126,17 @@ stw_framebuffer_get_size( struct stw_framebuffer *fb )
    width = client_rect.right - client_rect.left;
    height = client_rect.bottom - client_rect.top;
 
-   if(width < 1)
-      width = 1;
-   if(height < 1)
-      height = 1;
+   if (width <= 0 || height <= 0) {
+      /*
+       * When the window is minimized GetClientRect will return zeros.  Simply
+       * preserve the current window size, until the window is restored or
+       * maximized again.
+       */
+
+      assert(width == 0 && height == 0);
+
+      return;
+   }
 
    if(width != fb->width || height != fb->height) {
       fb->must_resize = TRUE;