aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/dmx/dmxinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/dmx/dmxinit.c')
-rw-r--r--xorg-server/hw/dmx/dmxinit.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/xorg-server/hw/dmx/dmxinit.c b/xorg-server/hw/dmx/dmxinit.c
index 5e3f1103c..94dbdd230 100644
--- a/xorg-server/hw/dmx/dmxinit.c
+++ b/xorg-server/hw/dmx/dmxinit.c
@@ -68,10 +68,13 @@
#include <GL/glx.h>
#include <GL/glxint.h>
#include "dmx_glxvisuals.h"
+#include "glx_extinit.h"
#include <X11/extensions/Xext.h>
#include <X11/extensions/extutil.h>
#endif /* GLXEXT */
+#include <X11/extensions/dmxproto.h>
+
/* 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++) {