[PATCH 1/2] dix: Add PostDispatchCallback

Adam Jackson ajax at redhat.com
Wed Oct 2 08:56:56 PDT 2013


Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 dix/dispatch.c      | 5 ++++-
 include/dixstruct.h | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/dix/dispatch.c b/dix/dispatch.c
index 71fda48..59ba011 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -167,6 +167,7 @@ static int nextFreeClientID;    /* always MIN free client ID */
 static int nClients;            /* number of authorized clients */
 
 CallbackListPtr ClientStateCallback;
+CallbackListPtr PostDispatchCallback;
 
 /* dispatchException & isItTimeToYield must be declared volatile since they
  * are modified by signal handlers - otherwise optimizer may assume it doesn't
@@ -428,9 +429,11 @@ Dispatch(void)
                     result = BadLength;
                 else {
                     result = XaceHookDispatch(client, client->majorOp);
-                    if (result == Success)
+                    if (result == Success) {
                         result =
                             (*client->requestVector[client->majorOp]) (client);
+                        CallCallbacks(&PostDispatchCallback, &result);
+                    }
                     XaceHookAuditEnd(client, result);
                 }
 #ifdef XSERVER_DTRACE
diff --git a/include/dixstruct.h b/include/dixstruct.h
index aef822c..4830ce0 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -39,6 +39,7 @@ SOFTWARE.
  */
 
 extern _X_EXPORT CallbackListPtr ClientStateCallback;
+extern _X_EXPORT CallbackListPtr PostDispatchCallback;
 
 typedef struct {
     ClientPtr client;
-- 
1.8.3.1



More information about the xorg-devel mailing list