summaryrefslogtreecommitdiff
path: root/Xext
diff options
context:
space:
mode:
authorEamon Walsh <ewalsh@tycho.nsa.gov>2007-08-29 14:16:46 -0400
committerEamon Walsh <ewalsh@moss-charon.epoch.ncsc.mil>2007-08-29 14:16:46 -0400
commite39694789e31e221fc8dec44ace9c697daf7acad (patch)
tree2ef4e123d2f6f09705384cc02ec88f6b2010009a /Xext
parent41355a53c29bbf879da0c6ea562294fcc7ef89ff (diff)
xace: drop map-window checking hook, add new hooks for controlling the
delivery of events to windows and clients. This is tentative. It's likely that an additional last-resort hook will be necessary for code that calls TryClientEvents or WriteEventsToClient directly. It's also possible that new xace machinery will be necessary to classify events and pull useful resource ID's out of them. The failure case also needs some thinking through. Should event delivery "succeed" or should it report undeliverable? Finally, XKB appears to call WriteToClient to pass events. Sigh.
Diffstat (limited to 'Xext')
-rw-r--r--Xext/xace.c19
-rw-r--r--Xext/xace.h25
-rw-r--r--Xext/xacestr.h16
3 files changed, 44 insertions, 16 deletions
diff --git a/Xext/xace.c b/Xext/xace.c
index 4d34dc3d9..3091ecd32 100644
--- a/Xext/xace.c
+++ b/Xext/xace.c
@@ -113,10 +113,25 @@ int XaceHook(int hook, ...)
prv = &rec.status;
break;
}
- case XACE_MAP_ACCESS: {
- XaceMapAccessRec rec = {
+ case XACE_SEND_ACCESS: {
+ XaceSendAccessRec rec = {
va_arg(ap, ClientPtr),
+ va_arg(ap, DeviceIntPtr),
va_arg(ap, WindowPtr),
+ va_arg(ap, xEventPtr),
+ va_arg(ap, int),
+ Success /* default allow */
+ };
+ calldata = &rec;
+ prv = &rec.status;
+ break;
+ }
+ case XACE_RECEIVE_ACCESS: {
+ XaceReceiveAccessRec rec = {
+ va_arg(ap, ClientPtr),
+ va_arg(ap, WindowPtr),
+ va_arg(ap, xEventPtr),
+ va_arg(ap, int),
Success /* default allow */
};
calldata = &rec;
diff --git a/Xext/xace.h b/Xext/xace.h
index f1a6e9d8c..c1fc0714f 100644
--- a/Xext/xace.h
+++ b/Xext/xace.h
@@ -46,18 +46,19 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define XACE_DEVICE_ACCESS 3
#define XACE_PROPERTY_ACCESS 4
#define XACE_DRAWABLE_ACCESS 5
-#define XACE_MAP_ACCESS 6
-#define XACE_CLIENT_ACCESS 7
-#define XACE_EXT_ACCESS 8
-#define XACE_SERVER_ACCESS 9
-#define XACE_SELECTION_ACCESS 10
-#define XACE_SCREEN_ACCESS 11
-#define XACE_SCREENSAVER_ACCESS 12
-#define XACE_AUTH_AVAIL 13
-#define XACE_KEY_AVAIL 14
-#define XACE_AUDIT_BEGIN 15
-#define XACE_AUDIT_END 16
-#define XACE_NUM_HOOKS 17
+#define XACE_SEND_ACCESS 6
+#define XACE_RECEIVE_ACCESS 7
+#define XACE_CLIENT_ACCESS 8
+#define XACE_EXT_ACCESS 9
+#define XACE_SERVER_ACCESS 10
+#define XACE_SELECTION_ACCESS 11
+#define XACE_SCREEN_ACCESS 12
+#define XACE_SCREENSAVER_ACCESS 13
+#define XACE_AUTH_AVAIL 14
+#define XACE_KEY_AVAIL 15
+#define XACE_AUDIT_BEGIN 16
+#define XACE_AUDIT_END 17
+#define XACE_NUM_HOOKS 18
extern CallbackListPtr XaceHooks[XACE_NUM_HOOKS];
diff --git a/Xext/xacestr.h b/Xext/xacestr.h
index c98be3d32..15d39b72e 100644
--- a/Xext/xacestr.h
+++ b/Xext/xacestr.h
@@ -70,12 +70,24 @@ typedef struct {
int status;
} XaceDrawableAccessRec;
-/* XACE_MAP_ACCESS */
+/* XACE_SEND_ACCESS */
+typedef struct {
+ ClientPtr client;
+ DeviceIntPtr dev;
+ WindowPtr pWin;
+ xEventPtr events;
+ int count;
+ int status;
+} XaceSendAccessRec;
+
+/* XACE_RECEIVE_ACCESS */
typedef struct {
ClientPtr client;
WindowPtr pWin;
+ xEventPtr events;
+ int count;
int status;
-} XaceMapAccessRec;
+} XaceReceiveAccessRec;
/* XACE_CLIENT_ACCESS */
typedef struct {