summaryrefslogtreecommitdiff
path: root/hw/dmx/dmxextension.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/dmx/dmxextension.c')
-rw-r--r--hw/dmx/dmxextension.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/hw/dmx/dmxextension.c b/hw/dmx/dmxextension.c
index c7eecaf7f..7bbdb9dd7 100644
--- a/hw/dmx/dmxextension.c
+++ b/hw/dmx/dmxextension.c
@@ -1504,7 +1504,7 @@ dmxAttachScreen (int idx,
if (!beShape)
{
dmxLogErrorSet (dmxWarning, errorSet, error, errorName,
- "SHAPE extension missing");
+ "SHAPE extension missing on back-end server");
dmxCloseDisplay (dmxScreen);
/* Restore the old screen */
@@ -1512,6 +1512,31 @@ dmxAttachScreen (int idx,
return 1;
}
+#ifdef COMPOSITE
+ if (!noCompositeExtension)
+ {
+ Bool beComposite = FALSE;
+ int eventBase;
+
+ XLIB_PROLOGUE (dmxScreen);
+ beComposite = XCompositeQueryExtension (dmxScreen->beDisplay,
+ &eventBase,
+ &errorBase);
+ XLIB_EPILOGUE (dmxScreen);
+
+ if (!beComposite)
+ {
+ dmxLogErrorSet (dmxWarning, errorSet, error, errorName,
+ "Composite extension missing on back-end server");
+ dmxCloseDisplay (dmxScreen);
+
+ /* Restore the old screen */
+ *dmxScreen = oldDMXScreen;
+ return 1;
+ }
+ }
+#endif
+
if (!dmxScreen->scrnWin)
dmxScreen->scrnWin = DefaultRootWindow (dmxScreen->beDisplay);