[PATCH 3/3] DMX: Add DMX and GLX extensions
Daniel Stone
daniel at fooishbar.org
Sun Nov 18 21:01:00 PST 2012
Unfortunately this also got lost in the extmod fallout, leaving the DMX
server not exposing the DMX or GLX extensions.
Signed-off-by: Daniel Stone <daniel at fooishbar.org>
---
hw/dmx/dmx.h | 2 ++
hw/dmx/dmxinit.c | 22 +++++++++++++++++++++-
include/extinit.h | 4 ----
3 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/hw/dmx/dmx.h b/hw/dmx/dmx.h
index d7c6204..f0cb044 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 5804353..7a50aeb 100644
--- a/hw/dmx/dmxinit.c
+++ b/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++) {
diff --git a/include/extinit.h b/include/extinit.h
index 7f4718f..5690d7b 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 <X11/extensions/dpmsconst.h>
extern _X_EXPORT Bool noDPMSExtension;
--
1.7.10.4
More information about the xorg-devel
mailing list