Xi: Add access control request handling.

dix:	New file access.c to handle all access control for devices.
This commit is contained in:
Peter Hutterer 2007-02-22 20:00:59 +10:30 committed by Peter Hutterer
commit 4b8b0e377a
15 changed files with 921 additions and 20 deletions

View file

@ -445,6 +445,37 @@ extern void SwitchCorePointer(DeviceIntPtr pDev);
extern DeviceIntPtr LookupDeviceIntRec(
CARD8 deviceid);
/* Pairing input devices */
extern int PairDevices(ClientPtr client,
DeviceIntPtr pointer,
DeviceIntPtr keyboard);
extern Bool RegisterPairingClient(ClientPtr client);
extern Bool UnregisterPairingClient(ClientPtr client);
/* Window/device based access control */
extern Bool ACRegisterClient(ClientPtr client);
extern Bool ACUnregisterClient(ClientPtr client);
extern int ACClearWindowAccess(ClientPtr client,
WindowPtr win,
int what);
extern int ACChangeWindowAccess(ClientPtr client,
WindowPtr win,
int defaultRule,
DeviceIntPtr* perm_devices,
int npermit,
DeviceIntPtr* deny_devices,
int ndeny);
extern void ACQueryWindowAccess(WindowPtr win,
int* defaultRule,
DeviceIntPtr** perm,
int* nperm,
DeviceIntPtr** deny,
int* ndeny);
extern Bool ACDeviceAllowed(WindowPtr win,
DeviceIntPtr dev);
/* Implemented by the DDX. */
extern int NewInputDeviceRequest(
InputOption *options);
@ -454,11 +485,4 @@ extern void DDXRingBell(
int pitch,
int duration);
extern int PairDevices(ClientPtr client,
DeviceIntPtr pointer,
DeviceIntPtr keyboard);
extern Bool RegisterPairingClient(ClientPtr client);
extern Bool UnregisterPairingClient(ClientPtr client);
#endif /* INPUT_H */

View file

@ -77,6 +77,14 @@ typedef struct _DevCursorNode {
struct _DevCursorNode* next;
} DevCursNodeRec, *DevCursNodePtr, *DevCursorList;
typedef struct _WindowAccessRec {
int defaultRule; /* WindowAccessDenyAll */
DeviceIntPtr* perm;
int nperm;
DeviceIntPtr* deny;
int ndeny;
} WindowAccessRec, *WindowAccessPtr;
typedef struct _WindowOpt {
VisualID visual; /* default: same as parent */
CursorPtr cursor; /* default: window.cursorNone */
@ -97,6 +105,7 @@ typedef struct _WindowOpt {
struct _OtherInputMasks *inputMasks; /* default: NULL */
#endif
DevCursorList deviceCursors; /* default: NULL */
WindowAccessRec access;
} WindowOptRec, *WindowOptPtr;
#define BackgroundPixel 2L