summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2006-03-23 01:12:24 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2006-03-23 01:12:24 +0000
commit2b464d93d1ce3b57565677e3bd9b99540d983ab3 (patch)
tree758afd2f52e2efb10d8ebcfba5982d0f5bf3fa24
parent497f80ac34dd9301b1c2c424ed82e043e9d69b54 (diff)
Before calling intel_region_release/reference() check if the regions
are changing.
-rw-r--r--src/mesa/drivers/dri/i915/i915_vtbl.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c
index b11382bdd4f..be90612bc57 100644
--- a/src/mesa/drivers/dri/i915/i915_vtbl.c
+++ b/src/mesa/drivers/dri/i915/i915_vtbl.c
@@ -359,10 +359,14 @@ i915_state_draw_region(struct intel_context *intel,
ASSERT(state == &i915->state || state == &i915->meta);
- intel_region_release(intel, &state->draw_region);
- intel_region_release(intel, &state->depth_region);
- intel_region_reference(&state->draw_region, color_region);
- intel_region_reference(&state->depth_region, depth_region);
+ if (state->draw_region != color_region) {
+ intel_region_release(intel, &state->draw_region);
+ intel_region_reference(&state->draw_region, color_region);
+ }
+ if (state->depth_region != depth_region) {
+ intel_region_release(intel, &state->depth_region);
+ intel_region_reference(&state->depth_region, depth_region);
+ }
/*
* Set stride/cpp values