summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i915tex/intel_buffers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i915tex/intel_buffers.c')
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_buffers.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/i915tex/intel_buffers.c b/src/mesa/drivers/dri/i915tex/intel_buffers.c
index 4e4f0d14c6..67f992e4a2 100644
--- a/src/mesa/drivers/dri/i915tex/intel_buffers.c
+++ b/src/mesa/drivers/dri/i915tex/intel_buffers.c
@@ -957,15 +957,22 @@ intelSwapBuffers(__DRIdrawablePrivate * dPriv)
intel_fb->swap_ust = ust;
}
- if (dPriv && intel->lastStamp != dPriv->lastStamp) {
+ if (intel->revalidateDrawable) {
+ __DRIscreenPrivate *sPriv = intel->driScreen;
+ LOCK_HARDWARE(intel);
+ DRI_VALIDATE_DRAWABLE_INFO(sPriv, dPriv);
+ intel->revalidateDrawable = GL_FALSE;
+ UNLOCK_HARDWARE(intel);
+ if (dPriv && intel->lastStamp != dPriv->lastStamp) {
/* XXX this doesn't appear to work quite right.
And in any case, it will never get called with single buffered
rendering here...
And if it's only a window move (not resize), don't need to do anything. */
- if (INTEL_DEBUG & DEBUG_LOCK)
- _mesa_printf("doing defered drawable update\n");
- intelWindowMoved(intel);
- intel->lastStamp = dPriv->lastStamp;
+ if (INTEL_DEBUG & DEBUG_LOCK)
+ _mesa_printf("doing defered drawable update\n");
+ intelWindowMoved(intel);
+ intel->lastStamp = dPriv->lastStamp;
+ }
}
}
else {