Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 50801)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 50802)
@@ -1005,5 +1005,12 @@
             return NULL;
         }
-        id = crServerMuralInit(pMural, "", visualBits, 0);
+        id = crServerMuralInit(pMural,
+#ifdef RT_OS_DARWIN
+                /* tested on darwin only so far */
+                NULL
+#else
+                ""
+#endif
+                , visualBits, 0);
         if (id < 0)
         {
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c	(revision 50801)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c	(revision 50802)
@@ -24,5 +24,5 @@
     GLint dims[2];
     GLint windowID = -1;
-    GLint spuWindow;
+    GLint spuWindow = 0;
     GLint realVisBits = visBits;
 
@@ -32,10 +32,23 @@
         realVisBits = cr_server.fVisualBitsDefault;
 
-    /*
-     * Have first SPU make a new window.
-     */
-    spuWindow = cr_server.head_spu->dispatch_table.WindowCreate( dpyName, realVisBits );
-    if (spuWindow < 0) {
-        return spuWindow;
+    if (!dpyName)
+    {
+        /*
+         * Have first SPU make a new window.
+         */
+        spuWindow = cr_server.head_spu->dispatch_table.WindowCreate( dpyName, realVisBits );
+        if (spuWindow < 0) {
+            return spuWindow;
+        }
+    }
+    else
+    {
+        CRMuralInfo *dummy = crServerGetDummyMural(visBits);
+        if (!dummy)
+        {
+            WARN(("crServerGetDummyMural failed"));
+            return -1;
+        }
+        spuWindow = dummy->spuWindow;
     }
 
@@ -202,5 +215,8 @@
     }
 
-    cr_server.head_spu->dispatch_table.WindowDestroy( mural->spuWindow );
+    if (!mural->CreateInfo.pszDpyName)
+        cr_server.head_spu->dispatch_table.WindowDestroy( mural->spuWindow );
+
+    mural->spuWindow = 0;
 
     if (mural->pVisibleRects)
