summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/wgl
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers/wgl')
-rw-r--r--src/gallium/state_trackers/wgl/stw_framebuffer.c22
-rw-r--r--src/gallium/state_trackers/wgl/stw_framebuffer.h2
2 files changed, 15 insertions, 9 deletions
diff --git a/src/gallium/state_trackers/wgl/stw_framebuffer.c b/src/gallium/state_trackers/wgl/stw_framebuffer.c
index c22e0f1..18ecb05 100644
--- a/src/gallium/state_trackers/wgl/stw_framebuffer.c
+++ b/src/gallium/state_trackers/wgl/stw_framebuffer.c
@@ -140,6 +140,8 @@ stw_framebuffer_get_size( struct stw_framebuffer *fb )
width = client_rect.right - client_rect.left;
height = client_rect.bottom - client_rect.top;
+ fb->minimized = width == 0 || height == 0;
+
if (width <= 0 || height <= 0) {
/*
* When the window is minimized GetClientRect will return zeros. Simply
@@ -530,15 +532,17 @@ DrvPresentBuffers(HDC hdc, PGLPRESENTBUFFERSDATA data)
}
}
- if(fb->shared_surface) {
- stw_dev->stw_winsys->compose(screen,
- res,
- fb->shared_surface,
- &fb->client_rect,
- data->PresentHistoryToken);
- }
- else {
- stw_dev->stw_winsys->present( screen, res, hdc );
+ if (!fb->minimized) {
+ if (fb->shared_surface) {
+ stw_dev->stw_winsys->compose(screen,
+ res,
+ fb->shared_surface,
+ &fb->client_rect,
+ data->PresentHistoryToken);
+ }
+ else {
+ stw_dev->stw_winsys->present( screen, res, hdc );
+ }
}
stw_framebuffer_update(fb);
diff --git a/src/gallium/state_trackers/wgl/stw_framebuffer.h b/src/gallium/state_trackers/wgl/stw_framebuffer.h
index 3ba51ba..cee28e8 100644
--- a/src/gallium/state_trackers/wgl/stw_framebuffer.h
+++ b/src/gallium/state_trackers/wgl/stw_framebuffer.h
@@ -79,6 +79,8 @@ struct stw_framebuffer
/* FIXME: Make this work for multiple contexts bound to the same framebuffer */
boolean must_resize;
+ boolean minimized; /**< Is the window currently minimized? */
+
unsigned width;
unsigned height;