diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2010-01-18 12:05:25 +0800 |
---|---|---|
committer | Chia-I Wu <olvaffe@gmail.com> | 2010-01-18 12:07:57 +0800 |
commit | 1ed63119452396e764a0f5b11db78903a2594df1 (patch) | |
tree | 8e2e2ec221f2320ceec44be8b2fde44774f0b2f9 | |
parent | ef517c9385521f6e46a1f56ef6817518434ca349 (diff) |
st/vega: Fix window resizing with egl_g3d.
egl_g3d calls st_set_framebuffer_surface on window resize. It updates
the renderbuffer's geometry and makes st_resize_framebuffer a no-op.
This commit improves the no-op check a little bit. It can do better
after gallium-fb-dimensions is merged.
-rw-r--r-- | src/gallium/state_trackers/vega/vg_context.h | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/vega/vg_tracker.c | 11 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/gallium/state_trackers/vega/vg_context.h b/src/gallium/state_trackers/vega/vg_context.h index ff8c1a0421..bc88c8d139 100644 --- a/src/gallium/state_trackers/vega/vg_context.h +++ b/src/gallium/state_trackers/vega/vg_context.h @@ -50,7 +50,7 @@ struct st_renderbuffer { }; struct st_framebuffer { - VGint init_width, init_height; + VGint width, height; struct st_renderbuffer *strb; struct st_renderbuffer *dsrb; diff --git a/src/gallium/state_trackers/vega/vg_tracker.c b/src/gallium/state_trackers/vega/vg_tracker.c index ff80aab03a..617c174eb6 100644 --- a/src/gallium/state_trackers/vega/vg_tracker.c +++ b/src/gallium/state_trackers/vega/vg_tracker.c @@ -193,8 +193,8 @@ struct st_framebuffer * st_create_framebuffer(const void *visual, */ stfb->alpha_mask = 0; - stfb->init_width = width; - stfb->init_height = height; + stfb->width = width; + stfb->height = height; stfb->privateData = privateData; } @@ -282,11 +282,14 @@ void st_resize_framebuffer(struct st_framebuffer *stfb, /* If this is a noop, exit early and don't do the clear, etc below. */ - if (strb->width == width && - strb->height == height && + if (stfb->width == width && + stfb->height == height && state->zsbuf) return; + stfb->width = width; + stfb->height = height; + if (strb->width != width || strb->height != height) st_renderbuffer_alloc_storage(ctx, strb, width, height); |