summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/xwin/InitOutput.c1
-rw-r--r--include/ddxhooks.h1
-rw-r--r--mi/miinitext.c11
3 files changed, 12 insertions, 1 deletions
diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c
index a86e452e1..7b4c835ed 100644
--- a/hw/xwin/InitOutput.c
+++ b/hw/xwin/InitOutput.c
@@ -216,6 +216,7 @@ ddxMain(void)
{
/* Initialize DDX-specific hooks */
ddxHooks.ddxBeforeReset = ddxBeforeReset;
+ ddxHooks.ddxPushProviders = ddxPushProviders;
}
/* See Porting Layer Definition - p. 57 */
diff --git a/include/ddxhooks.h b/include/ddxhooks.h
index 40c87fa70..c67f9e05b 100644
--- a/include/ddxhooks.h
+++ b/include/ddxhooks.h
@@ -27,6 +27,7 @@
struct _DdxHooks
{
void (*ddxBeforeReset)(void);
+ void (*ddxPushProviders)(void);
};
typedef struct _DdxHooks DdxHooks;
diff --git a/mi/miinitext.c b/mi/miinitext.c
index a7441c9a8..20e18687f 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -93,6 +93,7 @@ SOFTWARE.
#include "extension.h"
#include "micmap.h"
#include "globals.h"
+#include "ddxhooks.h"
extern Bool noTestExtensions;
@@ -469,7 +470,15 @@ InitExtensions(int argc, char *argv[])
#ifdef GLXEXT
if (serverGeneration == 1)
- GlxPushProvider(&__glXDRISWRastProvider);
+ {
+ GlxPushProvider(&__glXDRISWRastProvider);
+
+ if (ddxHooks.ddxPushProviders)
+ {
+ /* a chance for DDX to install providers better than swrast... */
+ ddxHooks.ddxPushProviders();
+ }
+ }
if (!noGlxExtension) GlxExtensionInit();
#endif
}