summaryrefslogtreecommitdiff
path: root/damageext
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-05-11 09:08:40 -0700
committerKeith Packard <keithp@keithp.com>2010-05-11 09:31:10 -0700
commit286935c6f4965a6b09de1fb9e579a00afa14082a (patch)
tree205e9ef1f81fae9d5c7abeb7361eab80f2e1b0c5 /damageext
parent3df22b293c1f1d27e7ce16662744c578d35b5aba (diff)
Remember drawable ID used to find damage target for use in events. Bug 5730.
Using Composite, window pixmaps are given names in the client resource namespace and yet may not have any XID recorded in the drawable structure. As such, we need to remember the XID used to lookup the pixmap in the resource database so that we can report the correct XID back to the client in damage events. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
Diffstat (limited to 'damageext')
-rw-r--r--damageext/damageext.c3
-rw-r--r--damageext/damageextint.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 462796e91..4e9019cd0 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -51,7 +51,7 @@ DamageExtNotify (DamageExtPtr pDamageExt, BoxPtr pBoxes, int nBoxes)
ev.type = DamageEventBase + XDamageNotify;
ev.level = pDamageExt->level;
ev.sequenceNumber = pClient->sequence;
- ev.drawable = pDrawable->id;
+ ev.drawable = pDamageExt->drawable;
ev.damage = pDamageExt->id;
ev.timestamp = currentTime.milliseconds;
ev.geometry.x = pDrawable->x;
@@ -205,6 +205,7 @@ ProcDamageCreate (ClientPtr client)
if (!pDamageExt)
return BadAlloc;
pDamageExt->id = stuff->damage;
+ pDamageExt->drawable = stuff->drawable;
pDamageExt->pDrawable = pDrawable;
pDamageExt->level = level;
pDamageExt->pClient = client;
diff --git a/damageext/damageextint.h b/damageext/damageextint.h
index 45c5ff96c..d40ba3e1c 100644
--- a/damageext/damageextint.h
+++ b/damageext/damageextint.h
@@ -55,6 +55,7 @@ typedef struct _DamageExt {
DamageReportLevel level;
ClientPtr pClient;
XID id;
+ XID drawable;
} DamageExtRec, *DamageExtPtr;
#define VERIFY_DAMAGEEXT(pDamageExt, rid, client, mode) { \