diff options
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r-- | src/gallium/state_trackers/wgl/stw_framebuffer.c | 22 | ||||
-rw-r--r-- | src/gallium/state_trackers/wgl/stw_framebuffer.h | 2 |
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 c22e0f153f0..18ecb05e94f 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 3ba51ba6898..cee28e8a19a 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; |