45 lines
1.8 KiB
Diff
45 lines
1.8 KiB
Diff
|
This commit causes drawing issues with i945, urxvt and xcompmgr.
|
||
|
|
||
|
From 8d7b7a0d71e0b89321b3341b781bc8845386def6 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= <krh@bitplanet.net>
|
||
|
Date: Thu, 29 Jul 2010 20:36:25 -0400
|
||
|
Subject: [PATCH 01/29] Set DamageSetReportAfterOp to true for the damage extension
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Change the damage extension reporter to queue up events after we chain
|
||
|
to the wrapped functions. Damage events are typically sent out after
|
||
|
the rendering happens anyway, since we submit batch buffers from the
|
||
|
flush callback chain and then flush client io buffers. Compositing
|
||
|
managers relie on this order, and there is no way we could reliably
|
||
|
provide damage events to clients before the rendering happens anyway.
|
||
|
|
||
|
By queueing up the damage events before the rendering happens, there's
|
||
|
a risk that the client io buffer may overflow and send the damage
|
||
|
events to the client before the driver has even seen the rendering
|
||
|
request. Reporting damage events after the rendering fixes this
|
||
|
corner case and better corresponds with how we expect this to work.
|
||
|
|
||
|
Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
|
||
|
Reviewed-by: Keith Packard <keithp@keithp.com>
|
||
|
---
|
||
|
damageext/damageext.c | 1 +
|
||
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
||
|
|
||
|
diff --git a/damageext/damageext.c b/damageext/damageext.c
|
||
|
index f5265dd..b4bb478 100644
|
||
|
--- a/damageext/damageext.c
|
||
|
+++ b/damageext/damageext.c
|
||
|
@@ -217,6 +217,7 @@ ProcDamageCreate (ClientPtr client)
|
||
|
if (!AddResource (stuff->damage, DamageExtType, (pointer) pDamageExt))
|
||
|
return BadAlloc;
|
||
|
|
||
|
+ DamageSetReportAfterOp (pDamageExt->pDamage, TRUE);
|
||
|
DamageRegister (pDamageExt->pDrawable, pDamageExt->pDamage);
|
||
|
|
||
|
if (pDrawable->type == DRAWABLE_WINDOW)
|
||
|
--
|
||
|
1.7.2.2
|
||
|
|