dix: reserve fixed extension opcodes for known extensions
Assign fixed opcodes for known (in-tree) extensions and add defines for them. Other places (eg. security extensions) that need to know those opcodes now can directly use those defines not having to look them up at runtime. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
4560d9a3fe
commit
c6eaca88cd
|
@ -69,8 +69,55 @@ int lastEvent = EXTENSION_EVENT_BASE;
|
|||
static int lastError = FirstExtensionError;
|
||||
static unsigned int NumExtensions = RESERVED_EXTENSIONS;
|
||||
|
||||
static struct { const char *name; int id; } reservedExt[] = {
|
||||
{ "BIG-REQUESTS", EXTENSION_MAJOR_BIG_REQUESTS },
|
||||
{ "Apple-WM", EXTENSION_MAJOR_APPLE_WM },
|
||||
{ "Apple-DRI", EXTENSION_MAJOR_APPLE_DRI },
|
||||
{ "Composite", EXTENSION_MAJOR_COMPOSITE },
|
||||
{ "DAMAGE", EXTENSION_MAJOR_DAMAGE },
|
||||
{ "DOUBLE-BUFFER", EXTENSION_MAJOR_DOUBLE_BUFFER },
|
||||
{ "DPMS", EXTENSION_MAJOR_DPMS },
|
||||
{ "DRI2", EXTENSION_MAJOR_DRI2 },
|
||||
{ "DRI3", EXTENSION_MAJOR_DRI3 },
|
||||
{ "Generic Event Extension", EXTENSION_MAJOR_GENERIC_EVENT },
|
||||
{ "GLX", EXTENSION_MAJOR_GLX },
|
||||
{ "MIT-SCREEN-SAVER", EXTENSION_MAJOR_MIT_SCREEN_SAVER },
|
||||
{ "NAMESPACE", EXTENSION_MAJOR_NAMESPACE },
|
||||
{ "Present", EXTENSION_MAJOR_PRESENT },
|
||||
{ "RANDR", EXTENSION_MAJOR_RANDR },
|
||||
{ "RECORD", EXTENSION_MAJOR_RECORD },
|
||||
{ "RENDER", EXTENSION_MAJOR_RENDER },
|
||||
{ "SECURITY", EXTENSION_MAJOR_SECURITY },
|
||||
{ "SELinux", EXTENSION_MAJOR_SELINUX },
|
||||
{ "SHAPE", EXTENSION_MAJOR_SHAPE },
|
||||
{ "MIT-SHM", EXTENSION_MAJOR_SHM },
|
||||
{ "SYNC", EXTENSION_MAJOR_SYNC },
|
||||
{ "Windows-DRI", EXTENSION_MAJOR_WINDOWS_DRI },
|
||||
{ "XFIXES", EXTENSION_MAJOR_XFIXES },
|
||||
{ "XFree86-Bigfont", EXTENSION_MAJOR_XF86_BIGFONT },
|
||||
{ "XFree86-DGA", EXTENSION_MAJOR_XF86_DGA },
|
||||
{ "XFree86-DRI", EXTENSION_MAJOR_XF86_DRI },
|
||||
{ "XFree86-VidModeExtension", EXTENSION_MAJOR_XF86_VIDMODE },
|
||||
{ "XC-MISC", EXTENSION_MAJOR_XC_MISC },
|
||||
{ "XInputExtension", EXTENSION_MAJOR_XINPUT },
|
||||
{ "XINERAMA", EXTENSION_MAJOR_XINERAMA },
|
||||
{ "XKEYBOARD", EXTENSION_MAJOR_XKEYBOARD },
|
||||
{ "X-Resource", EXTENSION_MAJOR_XRESOURCE },
|
||||
{ "XTEST", EXTENSION_MAJOR_XTEST },
|
||||
{ "XVideo", EXTENSION_MAJOR_XVIDEO },
|
||||
{ "XVideo-MotionCompensation", EXTENSION_MAJOR_XVMC },
|
||||
{ "XWAYLAND", EXTENSION_MAJOR_XWAYLAND },
|
||||
};
|
||||
|
||||
static int checkReserved(const char* name)
|
||||
{
|
||||
for (int i=0; i<ARRAY_SIZE(reservedExt); i++) {
|
||||
if (strcmp(name, reservedExt[i].name) == 0) {
|
||||
if (reservedExt[i].id < (RESERVED_EXTENSIONS + EXTENSION_BASE))
|
||||
return reservedExt[i].id;
|
||||
FatalError("BUG: RESERVED_EXTENSIONS too small for %d\n", reservedExt[i].id);
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,44 @@
|
|||
|
||||
#include "misc.h"
|
||||
|
||||
#define RESERVED_EXTENSIONS 2
|
||||
#define EXTENSION_MAJOR_APPLE_WM (EXTENSION_BASE + 0)
|
||||
#define EXTENSION_MAJOR_APPLE_DRI (EXTENSION_BASE + 1)
|
||||
#define EXTENSION_MAJOR_BIG_REQUESTS (EXTENSION_BASE + 2)
|
||||
#define EXTENSION_MAJOR_COMPOSITE (EXTENSION_BASE + 3)
|
||||
#define EXTENSION_MAJOR_DAMAGE (EXTENSION_BASE + 4)
|
||||
#define EXTENSION_MAJOR_DOUBLE_BUFFER (EXTENSION_BASE + 5)
|
||||
#define EXTENSION_MAJOR_DPMS (EXTENSION_BASE + 6)
|
||||
#define EXTENSION_MAJOR_DRI2 (EXTENSION_BASE + 7)
|
||||
#define EXTENSION_MAJOR_DRI3 (EXTENSION_BASE + 8)
|
||||
#define EXTENSION_MAJOR_GENERIC_EVENT (EXTENSION_BASE + 9)
|
||||
#define EXTENSION_MAJOR_GLX (EXTENSION_BASE + 10)
|
||||
#define EXTENSION_MAJOR_MIT_SCREEN_SAVER (EXTENSION_BASE + 11)
|
||||
#define EXTENSION_MAJOR_NAMESPACE (EXTENSION_BASE + 12)
|
||||
#define EXTENSION_MAJOR_PRESENT (EXTENSION_BASE + 13)
|
||||
#define EXTENSION_MAJOR_RANDR (EXTENSION_BASE + 14)
|
||||
#define EXTENSION_MAJOR_RECORD (EXTENSION_BASE + 15)
|
||||
#define EXTENSION_MAJOR_RENDER (EXTENSION_BASE + 16)
|
||||
#define EXTENSION_MAJOR_SECURITY (EXTENSION_BASE + 17)
|
||||
#define EXTENSION_MAJOR_SELINUX (EXTENSION_BASE + 18)
|
||||
#define EXTENSION_MAJOR_SHAPE (EXTENSION_BASE + 19)
|
||||
#define EXTENSION_MAJOR_SHM (EXTENSION_BASE + 20)
|
||||
#define EXTENSION_MAJOR_SYNC (EXTENSION_BASE + 21)
|
||||
#define EXTENSION_MAJOR_WINDOWS_DRI (EXTENSION_BASE + 22)
|
||||
#define EXTENSION_MAJOR_XFIXES (EXTENSION_BASE + 23)
|
||||
#define EXTENSION_MAJOR_XF86_BIGFONT (EXTENSION_BASE + 24)
|
||||
#define EXTENSION_MAJOR_XF86_DGA (EXTENSION_BASE + 25)
|
||||
#define EXTENSION_MAJOR_XF86_DRI (EXTENSION_BASE + 26)
|
||||
#define EXTENSION_MAJOR_XF86_VIDMODE (EXTENSION_BASE + 27)
|
||||
#define EXTENSION_MAJOR_XC_MISC (EXTENSION_BASE + 28)
|
||||
#define EXTENSION_MAJOR_XINPUT (EXTENSION_BASE + 29)
|
||||
#define EXTENSION_MAJOR_XINERAMA (EXTENSION_BASE + 30)
|
||||
#define EXTENSION_MAJOR_XKEYBOARD (EXTENSION_BASE + 31)
|
||||
#define EXTENSION_MAJOR_XRESOURCE (EXTENSION_BASE + 32)
|
||||
#define EXTENSION_MAJOR_XTEST (EXTENSION_BASE + 33)
|
||||
#define EXTENSION_MAJOR_XVIDEO (EXTENSION_BASE + 34)
|
||||
#define EXTENSION_MAJOR_XVMC (EXTENSION_BASE + 35)
|
||||
#define EXTENSION_MAJOR_XWAYLAND (EXTENSION_BASE + 36)
|
||||
|
||||
#define RESERVED_EXTENSIONS 38
|
||||
|
||||
#endif /* _XSERVER_EXTENSION_PRIV_H */
|
||||
|
|
Loading…
Reference in New Issue