miinitext.c revision 05b261ec
105b261ecSmrg/*********************************************************** 205b261ecSmrg 305b261ecSmrgCopyright 1987, 1998 The Open Group 405b261ecSmrg 505b261ecSmrgPermission to use, copy, modify, distribute, and sell this software and its 605b261ecSmrgdocumentation for any purpose is hereby granted without fee, provided that 705b261ecSmrgthe above copyright notice appear in all copies and that both that 805b261ecSmrgcopyright notice and this permission notice appear in supporting 905b261ecSmrgdocumentation. 1005b261ecSmrg 1105b261ecSmrgThe above copyright notice and this permission notice shall be included in 1205b261ecSmrgall copies or substantial portions of the Software. 1305b261ecSmrg 1405b261ecSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1505b261ecSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1605b261ecSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1705b261ecSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 1805b261ecSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1905b261ecSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2005b261ecSmrg 2105b261ecSmrgExcept as contained in this notice, the name of The Open Group shall not be 2205b261ecSmrgused in advertising or otherwise to promote the sale, use or other dealings 2305b261ecSmrgin this Software without prior written authorization from The Open Group. 2405b261ecSmrg 2505b261ecSmrg 2605b261ecSmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. 2705b261ecSmrg 2805b261ecSmrg All Rights Reserved 2905b261ecSmrg 3005b261ecSmrgPermission to use, copy, modify, and distribute this software and its 3105b261ecSmrgdocumentation for any purpose and without fee is hereby granted, 3205b261ecSmrgprovided that the above copyright notice appear in all copies and that 3305b261ecSmrgboth that copyright notice and this permission notice appear in 3405b261ecSmrgsupporting documentation, and that the name of Digital not be 3505b261ecSmrgused in advertising or publicity pertaining to distribution of the 3605b261ecSmrgsoftware without specific, written prior permission. 3705b261ecSmrg 3805b261ecSmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 3905b261ecSmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 4005b261ecSmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 4105b261ecSmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 4205b261ecSmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 4305b261ecSmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 4405b261ecSmrgSOFTWARE. 4505b261ecSmrg 4605b261ecSmrg******************************************************************/ 4705b261ecSmrg 4805b261ecSmrg#ifdef HAVE_DIX_CONFIG_H 4905b261ecSmrg#include <dix-config.h> 5005b261ecSmrg#endif 5105b261ecSmrg 5205b261ecSmrg#ifdef HAVE_XORG_CONFIG_H 5305b261ecSmrg#include <xorg-config.h> 5405b261ecSmrg#endif 5505b261ecSmrg 5605b261ecSmrg#ifdef HAVE_DMX_CONFIG_H 5705b261ecSmrg#include <dmx-config.h> 5805b261ecSmrg#endif 5905b261ecSmrg 6005b261ecSmrg#ifdef HAVE_XNEST_CONFIG_H 6105b261ecSmrg#include <xnest-config.h> 6205b261ecSmrg#undef DPMSExtension 6305b261ecSmrg#endif 6405b261ecSmrg 6505b261ecSmrg#ifdef HAVE_KDRIVE_CONFIG_H 6605b261ecSmrg#include <kdrive-config.h> 6705b261ecSmrg/* there must be a better way... */ 6805b261ecSmrg#undef XF86MISC 6905b261ecSmrg#undef XFreeXDGA 7005b261ecSmrg#undef XF86DRI 7105b261ecSmrg#undef XF86VIDMODE 7205b261ecSmrg#endif 7305b261ecSmrg 7405b261ecSmrg#ifdef HAVE_XGL_CONFIG_H 7505b261ecSmrg#include <xgl-config.h> 7605b261ecSmrg#undef XF86MISC 7705b261ecSmrg#undef XFreeXDGA 7805b261ecSmrg#undef XF86DRI 7905b261ecSmrg#undef XF86VIDMODE 8005b261ecSmrg#endif 8105b261ecSmrg 8205b261ecSmrg#include "misc.h" 8305b261ecSmrg#include "extension.h" 8405b261ecSmrg#include "micmap.h" 8505b261ecSmrg#include "globals.h" 8605b261ecSmrg 8705b261ecSmrg#if defined(QNX4) /* sleaze for Watcom on QNX4 ... */ 8805b261ecSmrg#undef GLXEXT 8905b261ecSmrg#endif 9005b261ecSmrg 9105b261ecSmrg/* Make sure Xprt only announces extensions it supports */ 9205b261ecSmrg#ifdef PRINT_ONLY_SERVER 9305b261ecSmrg#undef MITSHM /* this is incompatible to the vector-based Xprint DDX */ 9405b261ecSmrg#undef XKB 9505b261ecSmrg#undef PANORAMIX 9605b261ecSmrg#undef RES 9705b261ecSmrg#undef XINPUT 9805b261ecSmrg#undef XV 9905b261ecSmrg#undef SCREENSAVER 10005b261ecSmrg#undef XIDLE 10105b261ecSmrg#undef XRECORD 10205b261ecSmrg#undef XF86VIDMODE 10305b261ecSmrg#undef XF86MISC 10405b261ecSmrg#undef XFreeXDGA 10505b261ecSmrg#undef XF86DRI 10605b261ecSmrg#undef DPMSExtension 10705b261ecSmrg#undef FONTCACHE 10805b261ecSmrg#undef COMPOSITE 10905b261ecSmrg#undef DAMAGE 11005b261ecSmrg#undef XFIXES 11105b261ecSmrg#undef XEVIE 11205b261ecSmrg#else 11305b261ecSmrg#ifndef LOADABLEPRINTDDX 11405b261ecSmrg#undef XPRINT 11505b261ecSmrg#endif /* LOADABLEPRINTDDX */ 11605b261ecSmrg#endif /* PRINT_ONLY_SERVER */ 11705b261ecSmrg 11805b261ecSmrg 11905b261ecSmrgextern Bool noTestExtensions; 12005b261ecSmrg 12105b261ecSmrg#ifdef BIGREQS 12205b261ecSmrgextern Bool noBigReqExtension; 12305b261ecSmrg#endif 12405b261ecSmrg#ifdef COMPOSITE 12505b261ecSmrgextern Bool noCompositeExtension; 12605b261ecSmrg#endif 12705b261ecSmrg#ifdef DBE 12805b261ecSmrgextern Bool noDbeExtension; 12905b261ecSmrg#endif 13005b261ecSmrg#ifdef DPMSExtension 13105b261ecSmrgextern Bool noDPMSExtension; 13205b261ecSmrg#endif 13305b261ecSmrg#ifdef EVI 13405b261ecSmrgextern Bool noEVIExtension; 13505b261ecSmrg#endif 13605b261ecSmrg#ifdef FONTCACHE 13705b261ecSmrgextern Bool noFontCacheExtension; 13805b261ecSmrg#endif 13905b261ecSmrg#ifdef GLXEXT 14005b261ecSmrgextern Bool noGlxExtension; 14105b261ecSmrg#endif 14205b261ecSmrg#ifdef SCREENSAVER 14305b261ecSmrgextern Bool noScreenSaverExtension; 14405b261ecSmrg#endif 14505b261ecSmrg#ifdef MITSHM 14605b261ecSmrgextern Bool noMITShmExtension; 14705b261ecSmrg#endif 14805b261ecSmrg#ifdef MITMISC 14905b261ecSmrgextern Bool noMITMiscExtension; 15005b261ecSmrg#endif 15105b261ecSmrg#ifdef MULTIBUFFER 15205b261ecSmrgextern Bool noMultibufferExtension; 15305b261ecSmrg#endif 15405b261ecSmrg#ifdef RANDR 15505b261ecSmrgextern Bool noRRExtension; 15605b261ecSmrg#endif 15705b261ecSmrg#ifdef RENDER 15805b261ecSmrgextern Bool noRenderExtension; 15905b261ecSmrg#endif 16005b261ecSmrg#ifdef SHAPE 16105b261ecSmrgextern Bool noShapeExtension; 16205b261ecSmrg#endif 16305b261ecSmrg#ifdef XCSECURITY 16405b261ecSmrgextern Bool noSecurityExtension; 16505b261ecSmrg#endif 16605b261ecSmrg#ifdef XSYNC 16705b261ecSmrgextern Bool noSyncExtension; 16805b261ecSmrg#endif 16905b261ecSmrg#ifdef TOGCUP 17005b261ecSmrgextern Bool noXcupExtension; 17105b261ecSmrg#endif 17205b261ecSmrg#ifdef RES 17305b261ecSmrgextern Bool noResExtension; 17405b261ecSmrg#endif 17505b261ecSmrg#ifdef XAPPGROUP 17605b261ecSmrgextern Bool noXagExtension; 17705b261ecSmrg#endif 17805b261ecSmrg#ifdef XCMISC 17905b261ecSmrgextern Bool noXCMiscExtension; 18005b261ecSmrg#endif 18105b261ecSmrg#ifdef XEVIE 18205b261ecSmrgextern Bool noXevieExtension; 18305b261ecSmrg#endif 18405b261ecSmrg#ifdef XF86BIGFONT 18505b261ecSmrgextern Bool noXFree86BigfontExtension; 18605b261ecSmrg#endif 18705b261ecSmrg#ifdef XFreeXDGA 18805b261ecSmrgextern Bool noXFree86DGAExtension; 18905b261ecSmrg#endif 19005b261ecSmrg#ifdef XF86DRI 19105b261ecSmrgextern Bool noXFree86DRIExtension; 19205b261ecSmrg#endif 19305b261ecSmrg#ifdef XF86MISC 19405b261ecSmrgextern Bool noXFree86MiscExtension; 19505b261ecSmrg#endif 19605b261ecSmrg#ifdef XF86VIDMODE 19705b261ecSmrgextern Bool noXFree86VidModeExtension; 19805b261ecSmrg#endif 19905b261ecSmrg#ifdef XFIXES 20005b261ecSmrgextern Bool noXFixesExtension; 20105b261ecSmrg#endif 20205b261ecSmrg#ifdef XKB 20305b261ecSmrg/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */ 20405b261ecSmrgextern Bool noXkbExtension; 20505b261ecSmrg#endif 20605b261ecSmrg#ifdef PANORAMIX 20705b261ecSmrgextern Bool noPanoramiXExtension; 20805b261ecSmrg#endif 20905b261ecSmrg#ifdef XINPUT 21005b261ecSmrgextern Bool noXInputExtension; 21105b261ecSmrg#endif 21205b261ecSmrg#ifdef XIDLE 21305b261ecSmrgextern Bool noXIdleExtension; 21405b261ecSmrg#endif 21505b261ecSmrg#ifdef XV 21605b261ecSmrgextern Bool noXvExtension; 21705b261ecSmrg#endif 21805b261ecSmrg 21905b261ecSmrg#ifndef XFree86LOADER 22005b261ecSmrg#define INITARGS void 22105b261ecSmrgtypedef void (*InitExtension)(INITARGS); 22205b261ecSmrg#else /* XFree86Loader */ 22305b261ecSmrg#include "loaderProcs.h" 22405b261ecSmrg#endif 22505b261ecSmrg 22605b261ecSmrg#ifdef MITSHM 22705b261ecSmrg#define _XSHM_SERVER_ 22805b261ecSmrg#include <X11/extensions/shmstr.h> 22905b261ecSmrg#endif 23005b261ecSmrg#ifdef XTEST 23105b261ecSmrg#define _XTEST_SERVER_ 23205b261ecSmrg#include <X11/extensions/XTest.h> 23305b261ecSmrg#endif 23405b261ecSmrg#ifdef XKB 23505b261ecSmrg#include <X11/extensions/XKB.h> 23605b261ecSmrg#endif 23705b261ecSmrg#ifdef XPRINT 23805b261ecSmrg#include <X11/extensions/Print.h> 23905b261ecSmrg#endif 24005b261ecSmrg#ifdef XAPPGROUP 24105b261ecSmrg#define _XAG_SERVER_ 24205b261ecSmrg#include <X11/extensions/Xagstr.h> 24305b261ecSmrg#endif 24405b261ecSmrg#ifdef XACE 24505b261ecSmrg#include "xace.h" 24605b261ecSmrg#endif 24705b261ecSmrg#ifdef XCSECURITY 24805b261ecSmrg#include "securitysrv.h" 24905b261ecSmrg#include <X11/extensions/securstr.h> 25005b261ecSmrg#endif 25105b261ecSmrg#ifdef PANORAMIX 25205b261ecSmrg#include <X11/extensions/panoramiXproto.h> 25305b261ecSmrg#endif 25405b261ecSmrg#ifdef XF86BIGFONT 25505b261ecSmrg#include <X11/extensions/xf86bigfstr.h> 25605b261ecSmrg#endif 25705b261ecSmrg#ifdef RES 25805b261ecSmrg#include <X11/extensions/XResproto.h> 25905b261ecSmrg#endif 26005b261ecSmrg 26105b261ecSmrg/* FIXME: this whole block of externs should be from the appropriate headers */ 26205b261ecSmrg#ifdef EVI 26305b261ecSmrgextern void EVIExtensionInit(INITARGS); 26405b261ecSmrg#endif 26505b261ecSmrg#ifdef MITSHM 26605b261ecSmrgextern void ShmExtensionInit(INITARGS); 26705b261ecSmrg#endif 26805b261ecSmrg#ifdef MULTIBUFFER 26905b261ecSmrgextern void MultibufferExtensionInit(INITARGS); 27005b261ecSmrg#endif 27105b261ecSmrg#ifdef PANORAMIX 27205b261ecSmrgextern void PanoramiXExtensionInit(INITARGS); 27305b261ecSmrg#endif 27405b261ecSmrg#ifdef XINPUT 27505b261ecSmrgextern void XInputExtensionInit(INITARGS); 27605b261ecSmrg#endif 27705b261ecSmrg#ifdef XTEST 27805b261ecSmrgextern void XTestExtensionInit(INITARGS); 27905b261ecSmrg#endif 28005b261ecSmrg#ifdef BIGREQS 28105b261ecSmrgextern void BigReqExtensionInit(INITARGS); 28205b261ecSmrg#endif 28305b261ecSmrg#ifdef MITMISC 28405b261ecSmrgextern void MITMiscExtensionInit(INITARGS); 28505b261ecSmrg#endif 28605b261ecSmrg#ifdef XIDLE 28705b261ecSmrgextern void XIdleExtensionInit(INITARGS); 28805b261ecSmrg#endif 28905b261ecSmrg#ifdef XTRAP 29005b261ecSmrgextern void DEC_XTRAPInit(INITARGS); 29105b261ecSmrg#endif 29205b261ecSmrg#ifdef SCREENSAVER 29305b261ecSmrgextern void ScreenSaverExtensionInit (INITARGS); 29405b261ecSmrg#endif 29505b261ecSmrg#ifdef XV 29605b261ecSmrgextern void XvExtensionInit(INITARGS); 29705b261ecSmrgextern void XvMCExtensionInit(INITARGS); 29805b261ecSmrg#endif 29905b261ecSmrg#ifdef XSYNC 30005b261ecSmrgextern void SyncExtensionInit(INITARGS); 30105b261ecSmrg#endif 30205b261ecSmrg#ifdef XKB 30305b261ecSmrgextern void XkbExtensionInit(INITARGS); 30405b261ecSmrg#endif 30505b261ecSmrg#ifdef XCMISC 30605b261ecSmrgextern void XCMiscExtensionInit(INITARGS); 30705b261ecSmrg#endif 30805b261ecSmrg#ifdef XRECORD 30905b261ecSmrgextern void RecordExtensionInit(INITARGS); 31005b261ecSmrg#endif 31105b261ecSmrg#ifdef DBE 31205b261ecSmrgextern void DbeExtensionInit(INITARGS); 31305b261ecSmrg#endif 31405b261ecSmrg#ifdef XAPPGROUP 31505b261ecSmrgextern void XagExtensionInit(INITARGS); 31605b261ecSmrg#endif 31705b261ecSmrg#ifdef XACE 31805b261ecSmrgextern void XaceExtensionInit(INITARGS); 31905b261ecSmrg#endif 32005b261ecSmrg#ifdef XCSECURITY 32105b261ecSmrgextern void SecurityExtensionSetup(INITARGS); 32205b261ecSmrgextern void SecurityExtensionInit(INITARGS); 32305b261ecSmrg#endif 32405b261ecSmrg#ifdef XPRINT 32505b261ecSmrgextern void XpExtensionInit(INITARGS); 32605b261ecSmrg#endif 32705b261ecSmrg#ifdef XF86BIGFONT 32805b261ecSmrgextern void XFree86BigfontExtensionInit(INITARGS); 32905b261ecSmrg#endif 33005b261ecSmrg#ifdef XF86VIDMODE 33105b261ecSmrgextern void XFree86VidModeExtensionInit(INITARGS); 33205b261ecSmrg#endif 33305b261ecSmrg#ifdef XF86MISC 33405b261ecSmrgextern void XFree86MiscExtensionInit(INITARGS); 33505b261ecSmrg#endif 33605b261ecSmrg#ifdef XFreeXDGA 33705b261ecSmrgextern void XFree86DGAExtensionInit(INITARGS); 33805b261ecSmrg#endif 33905b261ecSmrg#ifdef GLXEXT 34005b261ecSmrgtypedef struct __GLXprovider __GLXprovider; 34105b261ecSmrg#ifdef INXDARWINAPP 34205b261ecSmrgextern __GLXprovider* __DarwinglXMesaProvider; 34305b261ecSmrgextern void DarwinGlxPushProvider(__GLXprovider *impl); 34405b261ecSmrgextern void DarwinGlxExtensionInit(INITARGS); 34505b261ecSmrgextern void DarwinGlxWrapInitVisuals(miInitVisualsProcPtr *); 34605b261ecSmrg#else 34705b261ecSmrgextern __GLXprovider __glXMesaProvider; 34805b261ecSmrgextern void GlxPushProvider(__GLXprovider *impl); 34905b261ecSmrgextern void GlxExtensionInit(INITARGS); 35005b261ecSmrgextern void GlxWrapInitVisuals(miInitVisualsProcPtr *); 35105b261ecSmrg#endif // INXDARWINAPP 35205b261ecSmrg#endif // GLXEXT 35305b261ecSmrg#ifdef XF86DRI 35405b261ecSmrgextern void XFree86DRIExtensionInit(INITARGS); 35505b261ecSmrg#endif 35605b261ecSmrg#ifdef TOGCUP 35705b261ecSmrgextern void XcupExtensionInit(INITARGS); 35805b261ecSmrg#endif 35905b261ecSmrg#ifdef DPMSExtension 36005b261ecSmrgextern void DPMSExtensionInit(INITARGS); 36105b261ecSmrg#endif 36205b261ecSmrg#ifdef FONTCACHE 36305b261ecSmrgextern void FontCacheExtensionInit(INITARGS); 36405b261ecSmrg#endif 36505b261ecSmrg#ifdef RENDER 36605b261ecSmrgextern void RenderExtensionInit(INITARGS); 36705b261ecSmrg#endif 36805b261ecSmrg#ifdef RANDR 36905b261ecSmrgextern void RRExtensionInit(INITARGS); 37005b261ecSmrg#endif 37105b261ecSmrg#ifdef RES 37205b261ecSmrgextern void ResExtensionInit(INITARGS); 37305b261ecSmrg#endif 37405b261ecSmrg#ifdef DMXEXT 37505b261ecSmrgextern void DMXExtensionInit(INITARGS); 37605b261ecSmrg#endif 37705b261ecSmrg#ifdef XEVIE 37805b261ecSmrgextern void XevieExtensionInit(INITARGS); 37905b261ecSmrg#endif 38005b261ecSmrg#ifdef XFIXES 38105b261ecSmrgextern void XFixesExtensionInit(INITARGS); 38205b261ecSmrg#endif 38305b261ecSmrg#ifdef DAMAGE 38405b261ecSmrgextern void DamageExtensionInit(INITARGS); 38505b261ecSmrg#endif 38605b261ecSmrg#ifdef COMPOSITE 38705b261ecSmrgextern void CompositeExtensionInit(INITARGS); 38805b261ecSmrg#endif 38905b261ecSmrg 39005b261ecSmrg/* The following is only a small first step towards run-time 39105b261ecSmrg * configurable extensions. 39205b261ecSmrg */ 39305b261ecSmrgtypedef struct { 39405b261ecSmrg char *name; 39505b261ecSmrg Bool *disablePtr; 39605b261ecSmrg} ExtensionToggle; 39705b261ecSmrg 39805b261ecSmrgstatic ExtensionToggle ExtensionToggleList[] = 39905b261ecSmrg{ 40005b261ecSmrg /* sort order is extension name string as shown in xdpyinfo */ 40105b261ecSmrg#ifdef BIGREQS 40205b261ecSmrg { "BIG-REQUESTS", &noBigReqExtension }, 40305b261ecSmrg#endif 40405b261ecSmrg#ifdef COMPOSITE 40505b261ecSmrg { "Composite", &noCompositeExtension }, 40605b261ecSmrg#endif 40705b261ecSmrg#ifdef DAMAGE 40805b261ecSmrg { "DAMAGE", &noDamageExtension }, 40905b261ecSmrg#endif 41005b261ecSmrg#ifdef DBE 41105b261ecSmrg { "DOUBLE-BUFFER", &noDbeExtension }, 41205b261ecSmrg#endif 41305b261ecSmrg#ifdef DPMSExtension 41405b261ecSmrg { "DPMS", &noDPMSExtension }, 41505b261ecSmrg#endif 41605b261ecSmrg#ifdef EVI 41705b261ecSmrg { "Extended-Visual-Information", &noEVIExtension }, 41805b261ecSmrg#endif 41905b261ecSmrg#ifdef FONTCACHE 42005b261ecSmrg { "FontCache", &noFontCacheExtension }, 42105b261ecSmrg#endif 42205b261ecSmrg#ifdef GLXEXT 42305b261ecSmrg { "GLX", &noGlxExtension }, 42405b261ecSmrg#endif 42505b261ecSmrg#ifdef SCREENSAVER 42605b261ecSmrg { "MIT-SCREEN-SAVER", &noScreenSaverExtension }, 42705b261ecSmrg#endif 42805b261ecSmrg#ifdef MITSHM 42905b261ecSmrg { SHMNAME, &noMITShmExtension }, 43005b261ecSmrg#endif 43105b261ecSmrg#ifdef MITMISC 43205b261ecSmrg { "MIT-SUNDRY-NONSTANDARD", &noMITMiscExtension }, 43305b261ecSmrg#endif 43405b261ecSmrg#ifdef MULTIBUFFER 43505b261ecSmrg { "Multi-Buffering", &noMultibufferExtension }, 43605b261ecSmrg#endif 43705b261ecSmrg#ifdef RANDR 43805b261ecSmrg { "RANDR", &noRRExtension }, 43905b261ecSmrg#endif 44005b261ecSmrg#ifdef RENDER 44105b261ecSmrg { "RENDER", &noRenderExtension }, 44205b261ecSmrg#endif 44305b261ecSmrg#ifdef SHAPE 44405b261ecSmrg { "SHAPE", &noShapeExtension }, 44505b261ecSmrg#endif 44605b261ecSmrg#ifdef XCSECURITY 44705b261ecSmrg { "SECURITY", &noSecurityExtension }, 44805b261ecSmrg#endif 44905b261ecSmrg#ifdef XSYNC 45005b261ecSmrg { "SYNC", &noSyncExtension }, 45105b261ecSmrg#endif 45205b261ecSmrg#ifdef TOGCUP 45305b261ecSmrg { "TOG-CUP", &noXcupExtension }, 45405b261ecSmrg#endif 45505b261ecSmrg#ifdef RES 45605b261ecSmrg { "X-Resource", &noResExtension }, 45705b261ecSmrg#endif 45805b261ecSmrg#ifdef XAPPGROUP 45905b261ecSmrg { "XC-APPGROUP", &noXagExtension }, 46005b261ecSmrg#endif 46105b261ecSmrg#ifdef XCMISC 46205b261ecSmrg { "XC-MISC", &noXCMiscExtension }, 46305b261ecSmrg#endif 46405b261ecSmrg#ifdef XEVIE 46505b261ecSmrg { "XEVIE", &noXevieExtension }, 46605b261ecSmrg#endif 46705b261ecSmrg#ifdef XF86BIGFONT 46805b261ecSmrg { "XFree86-Bigfont", &noXFree86BigfontExtension }, 46905b261ecSmrg#endif 47005b261ecSmrg#ifdef XFreeXDGA 47105b261ecSmrg { "XFree86-DGA", &noXFree86DGAExtension }, 47205b261ecSmrg#endif 47305b261ecSmrg#ifdef XF86DRI 47405b261ecSmrg { "XFree86-DRI", &noXFree86DRIExtension }, 47505b261ecSmrg#endif 47605b261ecSmrg#ifdef XF86MISC 47705b261ecSmrg { "XFree86-Misc", &noXFree86MiscExtension }, 47805b261ecSmrg#endif 47905b261ecSmrg#ifdef XF86VIDMODE 48005b261ecSmrg { "XFree86-VidModeExtension", &noXFree86VidModeExtension }, 48105b261ecSmrg#endif 48205b261ecSmrg#ifdef XFIXES 48305b261ecSmrg { "XFIXES", &noXFixesExtension }, 48405b261ecSmrg#endif 48505b261ecSmrg#ifdef PANORAMIX 48605b261ecSmrg { "XINERAMA", &noPanoramiXExtension }, 48705b261ecSmrg#endif 48805b261ecSmrg#ifdef XINPUT 48905b261ecSmrg { "XInputExtension", &noXInputExtension }, 49005b261ecSmrg#endif 49105b261ecSmrg#ifdef XKB 49205b261ecSmrg { "XKEYBOARD", &noXkbExtension }, 49305b261ecSmrg#endif 49405b261ecSmrg { "XTEST", &noTestExtensions }, 49505b261ecSmrg#ifdef XV 49605b261ecSmrg { "XVideo", &noXvExtension }, 49705b261ecSmrg#endif 49805b261ecSmrg { NULL, NULL } 49905b261ecSmrg}; 50005b261ecSmrg 50105b261ecSmrgBool EnableDisableExtension(char *name, Bool enable) 50205b261ecSmrg{ 50305b261ecSmrg ExtensionToggle *ext = &ExtensionToggleList[0]; 50405b261ecSmrg 50505b261ecSmrg for (ext = &ExtensionToggleList[0]; ext->name != NULL; ext++) { 50605b261ecSmrg if (strcmp(name, ext->name) == 0) { 50705b261ecSmrg *ext->disablePtr = !enable; 50805b261ecSmrg return TRUE; 50905b261ecSmrg } 51005b261ecSmrg } 51105b261ecSmrg 51205b261ecSmrg return FALSE; 51305b261ecSmrg} 51405b261ecSmrg 51505b261ecSmrgvoid EnableDisableExtensionError(char *name, Bool enable) 51605b261ecSmrg{ 51705b261ecSmrg ExtensionToggle *ext = &ExtensionToggleList[0]; 51805b261ecSmrg 51905b261ecSmrg ErrorF("Extension \"%s\" is not recognized\n", name); 52005b261ecSmrg ErrorF("Only the following extensions can be run-time %s:\n", 52105b261ecSmrg enable ? "enabled" : "disabled"); 52205b261ecSmrg for (ext = &ExtensionToggleList[0]; ext->name != NULL; ext++) 52305b261ecSmrg ErrorF(" %s\n", ext->name); 52405b261ecSmrg} 52505b261ecSmrg 52605b261ecSmrg#ifndef XFree86LOADER 52705b261ecSmrg 52805b261ecSmrg/*ARGSUSED*/ 52905b261ecSmrgvoid 53005b261ecSmrgInitExtensions(argc, argv) 53105b261ecSmrg int argc; 53205b261ecSmrg char *argv[]; 53305b261ecSmrg{ 53405b261ecSmrg#ifdef XCSECURITY 53505b261ecSmrg SecurityExtensionSetup(); 53605b261ecSmrg#endif 53705b261ecSmrg#ifdef PANORAMIX 53805b261ecSmrg# if !defined(PRINT_ONLY_SERVER) && !defined(NO_PANORAMIX) 53905b261ecSmrg if (!noPanoramiXExtension) PanoramiXExtensionInit(); 54005b261ecSmrg# endif 54105b261ecSmrg#endif 54205b261ecSmrg#ifdef SHAPE 54305b261ecSmrg if (!noShapeExtension) ShapeExtensionInit(); 54405b261ecSmrg#endif 54505b261ecSmrg#ifdef MITSHM 54605b261ecSmrg if (!noMITShmExtension) ShmExtensionInit(); 54705b261ecSmrg#endif 54805b261ecSmrg#ifdef EVI 54905b261ecSmrg if (!noEVIExtension) EVIExtensionInit(); 55005b261ecSmrg#endif 55105b261ecSmrg#ifdef MULTIBUFFER 55205b261ecSmrg if (!noMultibufferExtension) MultibufferExtensionInit(); 55305b261ecSmrg#endif 55405b261ecSmrg#if defined(XINPUT) 55505b261ecSmrg if (!noXInputExtension) XInputExtensionInit(); 55605b261ecSmrg#endif 55705b261ecSmrg#ifdef XTEST 55805b261ecSmrg if (!noTestExtensions) XTestExtensionInit(); 55905b261ecSmrg#endif 56005b261ecSmrg#ifdef BIGREQS 56105b261ecSmrg if (!noBigReqExtension) BigReqExtensionInit(); 56205b261ecSmrg#endif 56305b261ecSmrg#ifdef MITMISC 56405b261ecSmrg if (!noMITMiscExtension) MITMiscExtensionInit(); 56505b261ecSmrg#endif 56605b261ecSmrg#ifdef XIDLE 56705b261ecSmrg if (!noXIdleExtension) XIdleExtensionInit(); 56805b261ecSmrg#endif 56905b261ecSmrg#ifdef XTRAP 57005b261ecSmrg if (!noTestExtensions) DEC_XTRAPInit(); 57105b261ecSmrg#endif 57205b261ecSmrg#if defined(SCREENSAVER) && !defined(PRINT_ONLY_SERVER) 57305b261ecSmrg if (!noScreenSaverExtension) ScreenSaverExtensionInit (); 57405b261ecSmrg#endif 57505b261ecSmrg#ifdef XV 57605b261ecSmrg if (!noXvExtension) { 57705b261ecSmrg XvExtensionInit(); 57805b261ecSmrg XvMCExtensionInit(); 57905b261ecSmrg } 58005b261ecSmrg#endif 58105b261ecSmrg#ifdef XSYNC 58205b261ecSmrg if (!noSyncExtension) SyncExtensionInit(); 58305b261ecSmrg#endif 58405b261ecSmrg#if defined(XKB) && !defined(PRINT_ONLY_SERVER) 58505b261ecSmrg if (!noXkbExtension) XkbExtensionInit(); 58605b261ecSmrg#endif 58705b261ecSmrg#ifdef XCMISC 58805b261ecSmrg if (!noXCMiscExtension) XCMiscExtensionInit(); 58905b261ecSmrg#endif 59005b261ecSmrg#ifdef XRECORD 59105b261ecSmrg if (!noTestExtensions) RecordExtensionInit(); 59205b261ecSmrg#endif 59305b261ecSmrg#ifdef DBE 59405b261ecSmrg if (!noDbeExtension) DbeExtensionInit(); 59505b261ecSmrg#endif 59605b261ecSmrg#ifdef XAPPGROUP 59705b261ecSmrg if (!noXagExtension) XagExtensionInit(); 59805b261ecSmrg#endif 59905b261ecSmrg#ifdef XACE 60005b261ecSmrg XaceExtensionInit(); 60105b261ecSmrg#endif 60205b261ecSmrg#ifdef XCSECURITY 60305b261ecSmrg if (!noSecurityExtension) SecurityExtensionInit(); 60405b261ecSmrg#endif 60505b261ecSmrg#ifdef XPRINT 60605b261ecSmrg XpExtensionInit(); /* server-specific extension, cannot be disabled */ 60705b261ecSmrg#endif 60805b261ecSmrg#ifdef TOGCUP 60905b261ecSmrg if (!noXcupExtension) XcupExtensionInit(); 61005b261ecSmrg#endif 61105b261ecSmrg#if defined(DPMSExtension) && !defined(NO_HW_ONLY_EXTS) 61205b261ecSmrg if (!noDPMSExtension) DPMSExtensionInit(); 61305b261ecSmrg#endif 61405b261ecSmrg#ifdef FONTCACHE 61505b261ecSmrg if (!noFontCacheExtension) FontCacheExtensionInit(); 61605b261ecSmrg#endif 61705b261ecSmrg#ifdef XF86BIGFONT 61805b261ecSmrg if (!noXFree86BigfontExtension) XFree86BigfontExtensionInit(); 61905b261ecSmrg#endif 62005b261ecSmrg#if !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS) 62105b261ecSmrg#if defined(XF86VIDMODE) 62205b261ecSmrg if (!noXFree86VidModeExtension) XFree86VidModeExtensionInit(); 62305b261ecSmrg#endif 62405b261ecSmrg#if defined(XF86MISC) 62505b261ecSmrg if (!noXFree86MiscExtension) XFree86MiscExtensionInit(); 62605b261ecSmrg#endif 62705b261ecSmrg#if defined(XFreeXDGA) 62805b261ecSmrg if (!noXFree86DGAExtension) XFree86DGAExtensionInit(); 62905b261ecSmrg#endif 63005b261ecSmrg#ifdef XF86DRI 63105b261ecSmrg if (!noXFree86DRIExtension) XFree86DRIExtensionInit(); 63205b261ecSmrg#endif 63305b261ecSmrg#endif 63405b261ecSmrg 63505b261ecSmrg#ifdef GLXEXT 63605b261ecSmrg#ifdef INXDARWINAPP 63705b261ecSmrg DarwinGlxPushProvider(__DarwinglXMesaProvider); 63805b261ecSmrg if (!noGlxExtension) DarwinGlxExtensionInit(); 63905b261ecSmrg#else 64005b261ecSmrg GlxPushProvider(&__glXMesaProvider); 64105b261ecSmrg if (!noGlxExtension) GlxExtensionInit(); 64205b261ecSmrg#endif // INXDARWINAPP 64305b261ecSmrg#endif // GLXEXT 64405b261ecSmrg#ifdef XFIXES 64505b261ecSmrg /* must be before Render to layer DisplayCursor correctly */ 64605b261ecSmrg if (!noXFixesExtension) XFixesExtensionInit(); 64705b261ecSmrg#endif 64805b261ecSmrg#ifdef RENDER 64905b261ecSmrg if (!noRenderExtension) RenderExtensionInit(); 65005b261ecSmrg#endif 65105b261ecSmrg#ifdef RANDR 65205b261ecSmrg if (!noRRExtension) RRExtensionInit(); 65305b261ecSmrg#endif 65405b261ecSmrg#ifdef RES 65505b261ecSmrg if (!noResExtension) ResExtensionInit(); 65605b261ecSmrg#endif 65705b261ecSmrg#ifdef DMXEXT 65805b261ecSmrg DMXExtensionInit(); /* server-specific extension, cannot be disabled */ 65905b261ecSmrg#endif 66005b261ecSmrg#ifdef XEVIE 66105b261ecSmrg if (!noXevieExtension) XevieExtensionInit(); 66205b261ecSmrg#endif 66305b261ecSmrg#ifdef COMPOSITE 66405b261ecSmrg if (!noCompositeExtension) CompositeExtensionInit(); 66505b261ecSmrg#endif 66605b261ecSmrg#ifdef DAMAGE 66705b261ecSmrg if (!noDamageExtension) DamageExtensionInit(); 66805b261ecSmrg#endif 66905b261ecSmrg} 67005b261ecSmrg 67105b261ecSmrgvoid 67205b261ecSmrgInitVisualWrap() 67305b261ecSmrg{ 67405b261ecSmrg miResetInitVisuals(); 67505b261ecSmrg#ifdef GLXEXT 67605b261ecSmrg#ifndef __DARWIN__ 67705b261ecSmrg GlxWrapInitVisuals(&miInitVisualsProc); 67805b261ecSmrg#else 67905b261ecSmrg DarwinGlxWrapInitVisuals(&miInitVisualsProc); 68005b261ecSmrg#endif 68105b261ecSmrg#endif 68205b261ecSmrg} 68305b261ecSmrg 68405b261ecSmrg#else /* XFree86LOADER */ 68505b261ecSmrg/* List of built-in (statically linked) extensions */ 68605b261ecSmrgstatic ExtensionModule staticExtensions[] = { 68705b261ecSmrg#ifdef MITSHM 68805b261ecSmrg { ShmExtensionInit, SHMNAME, &noMITShmExtension, NULL, NULL }, 68905b261ecSmrg#endif 69005b261ecSmrg#ifdef XINPUT 69105b261ecSmrg { XInputExtensionInit, "XInputExtension", &noXInputExtension, NULL, NULL }, 69205b261ecSmrg#endif 69305b261ecSmrg#ifdef XTEST 69405b261ecSmrg { XTestExtensionInit, XTestExtensionName, &noTestExtensions, NULL, NULL }, 69505b261ecSmrg#endif 69605b261ecSmrg#ifdef XIDLE 69705b261ecSmrg { XIdleExtensionInit, "XIDLE", &noXIdleExtension, NULL, NULL }, 69805b261ecSmrg#endif 69905b261ecSmrg#ifdef XKB 70005b261ecSmrg { XkbExtensionInit, XkbName, &noXkbExtension, NULL, NULL }, 70105b261ecSmrg#endif 70205b261ecSmrg#ifdef XAPPGROUP 70305b261ecSmrg { XagExtensionInit, XAGNAME, &noXagExtension, NULL, NULL }, 70405b261ecSmrg#endif 70505b261ecSmrg#ifdef XACE 70605b261ecSmrg { XaceExtensionInit, XACE_EXTENSION_NAME, NULL, NULL, NULL }, 70705b261ecSmrg#endif 70805b261ecSmrg#ifdef XCSECURITY 70905b261ecSmrg { SecurityExtensionInit, SECURITY_EXTENSION_NAME, &noSecurityExtension, SecurityExtensionSetup, NULL }, 71005b261ecSmrg#endif 71105b261ecSmrg#ifdef XPRINT 71205b261ecSmrg { XpExtensionInit, XP_PRINTNAME, NULL, NULL, NULL }, 71305b261ecSmrg#endif 71405b261ecSmrg#ifdef PANORAMIX 71505b261ecSmrg { PanoramiXExtensionInit, PANORAMIX_PROTOCOL_NAME, &noPanoramiXExtension, NULL, NULL }, 71605b261ecSmrg#endif 71705b261ecSmrg#ifdef XFIXES 71805b261ecSmrg /* must be before Render to layer DisplayCursor correctly */ 71905b261ecSmrg { XFixesExtensionInit, "XFIXES", &noXFixesExtension, NULL, NULL }, 72005b261ecSmrg#endif 72105b261ecSmrg#ifdef XF86BIGFONT 72205b261ecSmrg { XFree86BigfontExtensionInit, XF86BIGFONTNAME, &noXFree86BigfontExtension, NULL, NULL }, 72305b261ecSmrg#endif 72405b261ecSmrg#ifdef RENDER 72505b261ecSmrg { RenderExtensionInit, "RENDER", &noRenderExtension, NULL, NULL }, 72605b261ecSmrg#endif 72705b261ecSmrg#ifdef RANDR 72805b261ecSmrg { RRExtensionInit, "RANDR", &noRRExtension, NULL, NULL }, 72905b261ecSmrg#endif 73005b261ecSmrg#ifdef COMPOSITE 73105b261ecSmrg { CompositeExtensionInit, "COMPOSITE", &noCompositeExtension, NULL }, 73205b261ecSmrg#endif 73305b261ecSmrg#ifdef DAMAGE 73405b261ecSmrg { DamageExtensionInit, "DAMAGE", &noDamageExtension, NULL }, 73505b261ecSmrg#endif 73605b261ecSmrg#ifdef XEVIE 73705b261ecSmrg { XevieExtensionInit, "XEVIE", &noXevieExtension, NULL }, 73805b261ecSmrg#endif 73905b261ecSmrg { NULL, NULL, NULL, NULL, NULL } 74005b261ecSmrg}; 74105b261ecSmrg 74205b261ecSmrg/*ARGSUSED*/ 74305b261ecSmrgvoid 74405b261ecSmrgInitExtensions(argc, argv) 74505b261ecSmrg int argc; 74605b261ecSmrg char *argv[]; 74705b261ecSmrg{ 74805b261ecSmrg int i; 74905b261ecSmrg ExtensionModule *ext; 75005b261ecSmrg static Bool listInitialised = FALSE; 75105b261ecSmrg 75205b261ecSmrg if (!listInitialised) { 75305b261ecSmrg /* Add built-in extensions to the list. */ 75405b261ecSmrg for (i = 0; staticExtensions[i].name; i++) 75505b261ecSmrg LoadExtension(&staticExtensions[i], TRUE); 75605b261ecSmrg 75705b261ecSmrg /* Sort the extensions according the init dependencies. */ 75805b261ecSmrg LoaderSortExtensions(); 75905b261ecSmrg listInitialised = TRUE; 76005b261ecSmrg } else { 76105b261ecSmrg /* Call the setup functions on subsequent server resets as well */ 76205b261ecSmrg for (i = 0; ExtensionModuleList[i].name != NULL; i++) { 76305b261ecSmrg ext = &ExtensionModuleList[i]; 76405b261ecSmrg if (ext->setupFunc != NULL && 76505b261ecSmrg (ext->disablePtr == NULL || 76605b261ecSmrg (ext->disablePtr != NULL && !*ext->disablePtr))) { 76705b261ecSmrg (ext->setupFunc)(); 76805b261ecSmrg } 76905b261ecSmrg } 77005b261ecSmrg } 77105b261ecSmrg 77205b261ecSmrg for (i = 0; ExtensionModuleList[i].name != NULL; i++) { 77305b261ecSmrg ext = &ExtensionModuleList[i]; 77405b261ecSmrg if (ext->initFunc != NULL && 77505b261ecSmrg (ext->disablePtr == NULL || 77605b261ecSmrg (ext->disablePtr != NULL && !*ext->disablePtr))) { 77705b261ecSmrg (ext->initFunc)(); 77805b261ecSmrg } 77905b261ecSmrg } 78005b261ecSmrg} 78105b261ecSmrg 78205b261ecSmrgstatic void (*__miHookInitVisualsFunction)(miInitVisualsProcPtr *); 78305b261ecSmrg 78405b261ecSmrgvoid 78505b261ecSmrgInitVisualWrap() 78605b261ecSmrg{ 78705b261ecSmrg miResetInitVisuals(); 78805b261ecSmrg if (__miHookInitVisualsFunction) 78905b261ecSmrg (*__miHookInitVisualsFunction)(&miInitVisualsProc); 79005b261ecSmrg} 79105b261ecSmrg 79205b261ecSmrg_X_EXPORT void 79305b261ecSmrgmiHookInitVisuals(void (**old)(miInitVisualsProcPtr *), 79405b261ecSmrg void (*new)(miInitVisualsProcPtr *)) 79505b261ecSmrg{ 79605b261ecSmrg if (old) 79705b261ecSmrg *old = __miHookInitVisualsFunction; 79805b261ecSmrg __miHookInitVisualsFunction = new; 79905b261ecSmrg} 80005b261ecSmrg 80105b261ecSmrg#endif /* XFree86LOADER */ 802