diff --git a/hw/dmx/dmx.h b/hw/dmx/dmx.h index d7c620467..f0cb04459 100644 --- a/hw/dmx/dmx.h +++ b/hw/dmx/dmx.h @@ -407,4 +407,6 @@ extern DevPrivateKeyRec dmxGlyphSetPrivateKeyRec; #define dmxGlyphSetPrivateKey (&dmxGlyphSetPrivateKeyRec) /**< Private index for GlyphSets */ +void DMXExtensionInit(void); + #endif /* DMX_H */ diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c index 5804353fb..7a50aebc3 100644 --- a/hw/dmx/dmxinit.c +++ b/hw/dmx/dmxinit.c @@ -68,10 +68,13 @@ #include #include #include "dmx_glxvisuals.h" +#include "glx_extinit.h" #include #include #endif /* GLXEXT */ +#include + /* Global variables available to all Xserver/hw/dmx routines. */ int dmxNumScreens; DMXScreenInfo *dmxScreens; @@ -586,6 +589,20 @@ dmxExecHost(void) return buffer; } +static void dmxAddExtensions(Bool glxSupported) +{ + const ExtensionModule dmxExtensions[] = { + { DMXExtensionInit, DMX_EXTENSION_NAME, NULL }, +#ifdef GLXEXT + { GlxExtensionInit, "GLX", &glxSupported }, +#endif + }; + int i; + + for (i = 0; i < ARRAY_SIZE(dmxExtensions); i++) + LoadExtension(&dmxExtensions[i], TRUE); +} + /** This routine is called in Xserver/dix/main.c from \a main(). */ void InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[]) @@ -594,7 +611,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[]) static unsigned long dmxGeneration = 0; #ifdef GLXEXT - Bool glxSupported = TRUE; + static Bool glxSupported = TRUE; #endif if (dmxGeneration != serverGeneration) { @@ -725,6 +742,9 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[]) glxSupported &= (dmxScreens[i].glxMajorOpcode > 0); #endif + if (serverGeneration == 1) + dmxAddExtensions(glxSupported); + /* Tell dix layer about the backend displays */ for (i = 0; i < dmxNumScreens; i++) { diff --git a/include/extinit.h b/include/extinit.h index 7f4718f2f..5690d7b01 100644 --- a/include/extinit.h +++ b/include/extinit.h @@ -68,10 +68,6 @@ extern _X_EXPORT Bool noDbeExtension; extern void DbeExtensionInit(void); #endif -#ifdef DMXEXT -extern void DMXExtensionInit(void); -#endif - #if defined(DPMSExtension) #include extern _X_EXPORT Bool noDPMSExtension;