summaryrefslogtreecommitdiff
path: root/mi/miinitext.c
diff options
context:
space:
mode:
Diffstat (limited to 'mi/miinitext.c')
-rw-r--r--mi/miinitext.c385
1 files changed, 346 insertions, 39 deletions
diff --git a/mi/miinitext.c b/mi/miinitext.c
index c9ea7444c..ee63aa41b 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -1,3 +1,4 @@
+/* $XFree86: xc/programs/Xserver/mi/miinitext.c,v 3.68 2003/01/15 02:34:14 torrey Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -47,10 +48,19 @@ SOFTWARE.
/* $Xorg: miinitext.c,v 1.4 2001/02/09 02:05:21 xorgcvs Exp $ */
#include "misc.h"
+#include "extension.h"
+#include "micmap.h"
#ifdef NOPEXEXT /* sleaze for Solaris cpp building XsunMono */
#undef PEXEXT
#endif
+
+#if defined(QNX4) /* sleaze for Watcom on QNX4 ... */
+#undef PEXEXT
+#undef XIE
+#undef GLXEXT
+#endif
+
#ifdef PANORAMIX
extern Bool noPanoramiXExtension;
#endif
@@ -59,94 +69,176 @@ extern Bool noTestExtensions;
extern Bool noXkbExtension;
#endif
+#ifndef XFree86LOADER
+#define INITARGS void
+typedef void (*InitExtension)(INITARGS);
+#else /* XFree86Loader */
+#include "loaderProcs.h"
+#endif
+
+#ifdef MITSHM
+#define _XSHM_SERVER_
+#include "shmstr.h"
+#endif
+#ifdef XTEST
+#define _XTEST_SERVER_
+#include "XTest.h"
+#endif
+#ifdef XKB
+#include "XKB.h"
+#endif
+#ifdef LBX
+#define _XLBX_SERVER_
+#include "lbxstr.h"
+#endif
+#ifdef XPRINT
+#include "Print.h"
+#endif
+#ifdef XAPPGROUP
+#define _XAG_SERVER_
+#include "Xagstr.h"
+#endif
+#ifdef XCSECURITY
+#define _SECURITY_SERVER
+#include "securstr.h"
+#endif
+#ifdef PANORAMIX
+#include "panoramiXproto.h"
+#endif
+#ifdef XF86BIGFONT
+#include "xf86bigfstr.h"
+#endif
+#ifdef RES
+#include "XResproto.h"
+#endif
+
+/* FIXME: this whole block of externs should be from the appropriate headers */
#ifdef BEZIER
-extern void BezierExtensionInit();
+extern void BezierExtensionInit(INITARGS);
#endif
#ifdef XTESTEXT1
-extern void XTestExtension1Init();
+extern void XTestExtension1Init(INITARGS);
#endif
#ifdef SHAPE
-extern void ShapeExtensionInit();
+extern void ShapeExtensionInit(INITARGS);
#endif
#ifdef EVI
-extern void EVIExtensionInit();
+extern void EVIExtensionInit(INITARGS);
#endif
#ifdef MITSHM
-extern void ShmExtensionInit();
+extern void ShmExtensionInit(INITARGS);
#endif
#ifdef PEXEXT
-extern void PexExtensionInit();
+extern void PexExtensionInit(INITARGS);
#endif
#ifdef MULTIBUFFER
-extern void MultibufferExtensionInit();
+extern void MultibufferExtensionInit(INITARGS);
#endif
#ifdef PANORAMIX
-extern void PanoramiXExtensionInit();
+extern void PanoramiXExtensionInit(INITARGS);
#endif
#ifdef XINPUT
-extern void XInputExtensionInit();
+extern void XInputExtensionInit(INITARGS);
#endif
#ifdef XTEST
-extern void XTestExtensionInit();
+extern void XTestExtensionInit(INITARGS);
#endif
#ifdef BIGREQS
-extern void BigReqExtensionInit();
+extern void BigReqExtensionInit(INITARGS);
#endif
#ifdef MITMISC
-extern void MITMiscExtensionInit();
+extern void MITMiscExtensionInit(INITARGS);
#endif
#ifdef XIDLE
-extern void XIdleExtensionInit();
+extern void XIdleExtensionInit(INITARGS);
#endif
#ifdef XTRAP
-extern void DEC_XTRAPInit();
+extern void DEC_XTRAPInit(INITARGS);
#endif
#ifdef SCREENSAVER
-extern void ScreenSaverExtensionInit ();
+extern void ScreenSaverExtensionInit (INITARGS);
#endif
#ifdef XV
-extern void XvExtensionInit();
+extern void XvExtensionInit(INITARGS);
+extern void XvMCExtensionInit(INITARGS);
#endif
#ifdef XIE
-extern void XieInit();
+extern void XieInit(INITARGS);
#endif
#ifdef XSYNC
-extern void SyncExtensionInit();
+extern void SyncExtensionInit(INITARGS);
#endif
#ifdef XKB
-extern void XkbExtensionInit();
+extern void XkbExtensionInit(INITARGS);
#endif
#ifdef XCMISC
-extern void XCMiscExtensionInit();
+extern void XCMiscExtensionInit(INITARGS);
#endif
#ifdef XRECORD
-extern void XRecordExtensionInit();
+extern void RecordExtensionInit(INITARGS);
#endif
#ifdef LBX
-extern void LbxExtensionInit();
+extern void LbxExtensionInit(INITARGS);
#endif
#ifdef DBE
-extern void DbeExtensionInit();
+extern void DbeExtensionInit(INITARGS);
#endif
#ifdef XAPPGROUP
-extern void XagExtensionInit();
-#endif
-#ifdef XF86VIDMODE
-extern void XFree86VidModeExtensionInit();
+extern void XagExtensionInit(INITARGS);
#endif
#ifdef XCSECURITY
-extern void SecurityExtensionInit();
+extern void SecurityExtensionInit(INITARGS);
#endif
#ifdef XPRINT
-extern void XpExtensionInit();
+extern void XpExtensionInit(INITARGS);
+#endif
+#ifdef XF86BIGFONT
+extern void XFree86BigfontExtensionInit(INITARGS);
+#endif
+#ifdef XF86VIDMODE
+extern void XFree86VidModeExtensionInit(INITARGS);
+#endif
+#ifdef XF86MISC
+extern void XFree86MiscExtensionInit(INITARGS);
+#endif
+#ifdef XFreeXDGA
+extern void XFree86DGAExtensionInit(INITARGS);
+#endif
+#ifdef GLXEXT
+#ifndef __DARWIN__
+extern void GlxExtensionInit(INITARGS);
+extern void GlxWrapInitVisuals(miInitVisualsProcPtr *);
+#else
+extern void DarwinGlxExtensionInit(INITARGS);
+extern void DarwinGlxWrapInitVisuals(miInitVisualsProcPtr *);
+#endif
+#endif
+#ifdef XF86DRI
+extern void XFree86DRIExtensionInit(INITARGS);
#endif
#ifdef TOGCUP
-extern void XcupExtensionInit();
+extern void XcupExtensionInit(INITARGS);
#endif
#ifdef DPMSExtension
-extern void DPMSExtensionInit();
+extern void DPMSExtensionInit(INITARGS);
+#endif
+#ifdef DPSEXT
+extern void DPSExtensionInit(INITARGS);
+#endif
+#ifdef FONTCACHE
+extern void FontCacheExtensionInit(INITARGS);
+#endif
+#ifdef RENDER
+extern void RenderExtensionInit(INITARGS);
+#endif
+#ifdef RANDR
+extern void RRExtensionInit(INITARGS);
+#endif
+#ifdef RES
+extern void ResExtensionInit(INITARGS);
#endif
+#ifndef XFree86LOADER
/*ARGSUSED*/
void
@@ -155,9 +247,9 @@ InitExtensions(argc, argv)
char *argv[];
{
#ifdef PANORAMIX
-#if !defined(PRINT_ONLY_SERVER) && !defined(NO_PANORAMIX)
+# if !defined(PRINT_ONLY_SERVER) && !defined(NO_PANORAMIX)
if (!noPanoramiXExtension) PanoramiXExtensionInit();
-#endif
+# endif
#endif
#ifdef BEZIER
BezierExtensionInit();
@@ -180,7 +272,7 @@ InitExtensions(argc, argv)
#ifdef MULTIBUFFER
MultibufferExtensionInit();
#endif
-#ifdef XINPUT
+#if defined(XINPUT) && !defined(NO_HW_ONLY_EXTS)
XInputExtensionInit();
#endif
#ifdef XTEST
@@ -203,6 +295,7 @@ InitExtensions(argc, argv)
#endif
#ifdef XV
XvExtensionInit();
+ XvMCExtensionInit();
#endif
#ifdef XIE
XieInit();
@@ -210,7 +303,7 @@ InitExtensions(argc, argv)
#ifdef XSYNC
SyncExtensionInit();
#endif
-#if defined(XKB) && !defined(PRINT_ONLY_SERVER)
+#if defined(XKB) && !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS)
if (!noXkbExtension) XkbExtensionInit();
#endif
#ifdef XCMISC
@@ -228,9 +321,6 @@ InitExtensions(argc, argv)
#ifdef XAPPGROUP
XagExtensionInit();
#endif
-#if defined(XF86VIDMODE) && !defined(PRINT_ONLY_SERVER)
- XFree86VidModeExtensionInit();
-#endif
#ifdef XCSECURITY
SecurityExtensionInit();
#endif
@@ -240,7 +330,224 @@ InitExtensions(argc, argv)
#ifdef TOGCUP
XcupExtensionInit();
#endif
-#if defined(DPMSExtension) && !defined(PRINT_ONLY_SERVER)
+#if defined(DPMSExtension) && !defined(NO_HW_ONLY_EXTS)
DPMSExtensionInit();
#endif
+#ifdef FONTCACHE
+ FontCacheExtensionInit();
+#endif
+#ifdef XF86BIGFONT
+ XFree86BigfontExtensionInit();
+#endif
+#if !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS)
+#if defined(XF86VIDMODE)
+ XFree86VidModeExtensionInit();
+#endif
+#if defined(XF86MISC)
+ XFree86MiscExtensionInit();
+#endif
+#if defined(XFreeXDGA)
+ XFree86DGAExtensionInit();
+#endif
+#ifdef XF86DRI
+ XFree86DRIExtensionInit();
+#endif
+#endif
+#ifdef GLXEXT
+#ifndef XPRINT /* we don't want Glx in the Xprint server */
+#ifndef __DARWIN__
+ GlxExtensionInit();
+#else
+ DarwinGlxExtensionInit();
+#endif
+#endif
+#endif
+#ifdef DPSEXT
+#ifndef XPRINT
+ DPSExtensionInit();
+#endif
+#endif
+#ifdef RENDER
+ RenderExtensionInit();
+#endif
+#ifdef RANDR
+ RRExtensionInit();
+#endif
+#ifdef RES
+ ResExtensionInit();
+#endif
}
+
+void
+InitVisualWrap()
+{
+ miResetInitVisuals();
+#ifdef GLXEXT
+#ifndef XPRINT
+#ifndef __DARWIN__
+ GlxWrapInitVisuals(&miInitVisualsProc);
+#else
+ DarwinGlxWrapInitVisuals(&miInitVisualsProc);
+#endif
+#endif
+#endif
+}
+
+#else /* XFree86LOADER */
+#if 0
+/* FIXME:The names here must come from the headers. those with ?? are
+ not included in X11R6.3 sample implementation, so there's a problem... */
+/* XXX use the correct #ifdefs for symbols not present when an extension
+ is disabled */
+ExtensionModule extension[] =
+{
+ { NULL, "BEZIER", NULL, NULL }, /* ?? */
+ { NULL, "XTEST1", &noTestExtensions, NULL }, /* ?? */
+ { NULL, "SHAPE", NULL, NULL },
+ { NULL, "MIT-SHM", NULL, NULL },
+ { NULL, "X3D-PEX", NULL, NULL },
+ { NULL, "Multi-Buffering", NULL, NULL },
+ { NULL, "XInputExtension", NULL, NULL },
+ { NULL, "XTEST", &noTestExtensions, NULL },
+ { NULL, "BIG-REQUESTS", NULL, NULL },
+ { NULL, "MIT-SUNDRY-NONSTANDARD", NULL, NULL },
+ { NULL, "XIDLE", NULL, NULL }, /* ?? */
+ { NULL, "XTRAP", &noTestExtensions, NULL }, /* ?? */
+ { NULL, "MIT-SCREEN-SAVER", NULL, NULL },
+ { NULL, "XVideo", NULL, NULL }, /* ?? */
+ { NULL, "XIE", NULL, NULL },
+ { NULL, "SYNC", NULL, NULL },
+#ifdef XKB
+ { NULL, "XKEYBOARD", &noXkbExtension, NULL },
+#else
+ { NULL, "NOXKEYBOARD", NULL, NULL },
+#endif
+ { NULL, "XC-MISC", NULL, NULL },
+ { NULL, "RECORD", &noTestExtensions, NULL },
+ { NULL, "LBX", NULL, NULL },
+ { NULL, "DOUBLE-BUFFER", NULL, NULL },
+ { NULL, "XC-APPGROUP", NULL, NULL },
+ { NULL, "SECURITY", NULL, NULL },
+ { NULL, "XpExtension", NULL, NULL },
+ { NULL, "XFree86-VidModeExtension", NULL, NULL },
+ { NULL, "XFree86-Misc", NULL, NULL },
+ { NULL, "XFree86-DGA", NULL, NULL },
+ { NULL, "DPMS", NULL, NULL },
+ { NULL, "GLX", NULL, NULL },
+ { NULL, "TOG-CUP", NULL, NULL },
+ { NULL, "Extended-Visual-Information", NULL, NULL },
+#ifdef PANORAMIX
+ { NULL, "XINERAMA", &noPanoramiXExtension, NULL },
+#else
+ { NULL, "NOXINERAMA", NULL, NULL },
+#endif
+ { NULL, "XFree86-Bigfont", NULL, NULL },
+ { NULL, "XFree86-DRI", NULL, NULL },
+ { NULL, "Adobe-DPS-Extension", NULL, NULL },
+ { NULL, "FontCache", NULL, NULL },
+ { NULL, "RENDER", NULL, NULL },
+ { NULL, "RANDR", NULL, NULL },
+ { NULL, "X-Resource", NULL, NULL },
+ { NULL, NULL, NULL, NULL }
+};
+#endif
+
+/* List of built-in (statically linked) extensions */
+static ExtensionModule staticExtensions[] = {
+#ifdef BEZIER
+ { BezierExtensionInit, "BEZIER", NULL, NULL, NULL },
+#endif
+#ifdef XTESTEXT1
+ { XTestExtension1Init, "XTEST1", &noTestExtensions, NULL, NULL },
+#endif
+#ifdef MITSHM
+ { ShmExtensionInit, SHMNAME, NULL, NULL, NULL },
+#endif
+#ifdef XINPUT
+ { XInputExtensionInit, "XInputExtension", NULL, NULL, NULL },
+#endif
+#ifdef XTEST
+ { XTestExtensionInit, XTestExtensionName, &noTestExtensions, NULL, NULL },
+#endif
+#ifdef XIDLE
+ { XIdleExtensionInit, "XIDLE", NULL, NULL, NULL },
+#endif
+#ifdef XKB
+ { XkbExtensionInit, XkbName, &noXkbExtension, NULL, NULL },
+#endif
+#ifdef LBX
+ { LbxExtensionInit, LBXNAME, NULL, NULL, NULL },
+#endif
+#ifdef XAPPGROUP
+ { XagExtensionInit, XAGNAME, NULL, NULL, NULL },
+#endif
+#ifdef XCSECURITY
+ { SecurityExtensionInit, SECURITY_EXTENSION_NAME, NULL, NULL, NULL },
+#endif
+#ifdef XPRINT
+ { XpExtensionInit, XP_PRINTNAME, NULL, NULL, NULL },
+#endif
+#ifdef PANORAMIX
+ { PanoramiXExtensionInit, PANORAMIX_PROTOCOL_NAME, &noPanoramiXExtension, NULL, NULL },
+#endif
+#ifdef XF86BIGFONT
+ { XFree86BigfontExtensionInit, XF86BIGFONTNAME, NULL, NULL, NULL },
+#endif
+#ifdef RENDER
+ { RenderExtensionInit, "RENDER", NULL, NULL, NULL },
+#endif
+#ifdef RANDR
+ { RRExtensionInit, "RANDR", NULL, NULL, NULL },
+#endif
+ { NULL, NULL, NULL, NULL, NULL }
+};
+
+/*ARGSUSED*/
+void
+InitExtensions(argc, argv)
+ int argc;
+ char *argv[];
+{
+ int i;
+ ExtensionModule *ext;
+ static Bool listInitialised = FALSE;
+
+ if (!listInitialised) {
+ /* Add built-in extensions to the list. */
+ for (i = 0; staticExtensions[i].name; i++)
+ LoadExtension(&staticExtensions[i], TRUE);
+
+ /* Sort the extensions according the init dependencies. */
+ LoaderSortExtensions();
+ listInitialised = TRUE;
+ }
+
+ for (i = 0; ExtensionModuleList[i].name != NULL; i++) {
+ ext = &ExtensionModuleList[i];
+ if (ext->initFunc != NULL &&
+ (ext->disablePtr == NULL ||
+ (ext->disablePtr != NULL && !*ext->disablePtr))) {
+ (ext->initFunc)();
+ }
+ }
+}
+
+static void (*__miHookInitVisualsFunction)(miInitVisualsProcPtr *);
+
+void
+InitVisualWrap()
+{
+ miResetInitVisuals();
+ if (__miHookInitVisualsFunction)
+ (*__miHookInitVisualsFunction)(&miInitVisualsProc);
+}
+
+void miHookInitVisuals(void (**old)(miInitVisualsProcPtr *),
+ void (*new)(miInitVisualsProcPtr *))
+{
+ if (old)
+ *old = __miHookInitVisualsFunction;
+ __miHookInitVisualsFunction = new;
+}
+
+#endif /* XFree86LOADER */