dix: Add a callback chain for window property state change

This will be used by in-server features that need to react to property
changes. The first one will be _XWAYLAND_ALLOW_COMMITS.

Signed-off-by: Adam Jackson <ajax@redhat.com>
[Pekka: add commit message body]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
Adam Jackson 2014-07-12 12:45:23 -04:00
parent 50bcea8be3
commit 8e3f9ce6c0
2 changed files with 17 additions and 0 deletions

View File

@ -105,10 +105,17 @@ dixLookupProperty(PropertyPtr *result, WindowPtr pWin, Atom propertyName,
return rc;
}
CallbackListPtr PropertyStateCallback;
static void
deliverPropertyNotifyEvent(WindowPtr pWin, int state, PropertyPtr pProp)
{
xEvent event;
PropertyStateRec rec = {
.win = pWin,
.prop = pProp,
.state = state
};
UpdateCurrentTimeIf();
event = (xEvent) {
.u.property.window = pWin->drawable.id,
@ -117,6 +124,8 @@ deliverPropertyNotifyEvent(WindowPtr pWin, int state, PropertyPtr pProp)
.u.property.time = currentTime.milliseconds,
};
event.u.u.type = PropertyNotify;
CallCallbacks(&PropertyStateCallback, &rec);
DeliverEvents(pWin, &event, 1, (WindowPtr) NULL);
}

View File

@ -51,6 +51,14 @@ SOFTWARE.
typedef struct _Property *PropertyPtr;
typedef struct _PropertyStateRec {
WindowPtr win;
PropertyPtr prop;
int state;
} PropertyStateRec;
extern CallbackListPtr PropertyStateCallback;
extern _X_EXPORT int dixLookupProperty(PropertyPtr * /*result */ ,
WindowPtr /*pWin */ ,
Atom /*proprty */ ,