Index: /trunk/src/VBox/Additions/x11/VBoxClient/display-svga-x11.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/display-svga-x11.cpp	(revision 91715)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/display-svga-x11.cpp	(revision 91716)
@@ -160,4 +160,5 @@
     void (*pXRRFreeCrtcInfo)(XRRCrtcInfo *);
     void (*pXRRAddOutputMode)(Display *, RROutput, RRMode);
+    void (*pXRRSetOutputPrimary)(Display *, Window, RROutput);
 };
 
@@ -171,4 +172,5 @@
     uint32_t height;
     bool fEnabled;
+    bool fPrimary;
 };
 
@@ -886,4 +888,7 @@
     *(void **)(&x11Context.pXRRAddOutputMode) = dlsym(x11Context.pRandLibraryHandle, "XRRAddOutputMode");
     checkFunctionPtrReturn(x11Context.pXRRAddOutputMode);
+
+    *(void **)(&x11Context.pXRRSetOutputPrimary) = dlsym(x11Context.pRandLibraryHandle, "XRRSetOutputPrimary");
+    checkFunctionPtrReturn(x11Context.pXRRSetOutputPrimary);
 
     return VINF_SUCCESS;
@@ -913,4 +918,5 @@
     x11Context.pXRRFreeCrtcInfo = NULL;
     x11Context.pXRRAddOutputMode = NULL;
+    x11Context.pXRRSetOutputPrimary = NULL;
     x11Context.fWmwareCtrlExtention = false;
     x11Context.fMonitorInfoAvailable = false;
@@ -1226,4 +1232,15 @@
         x11Context.pXRRAddOutputMode(x11Context.pDisplay, outputId, pModeInfo->id);
 #endif
+
+    if (paOutputs[iOutputIndex].fPrimary)
+    {
+#ifdef WITH_DISTRO_XRAND_XINERAMA
+        XRRSetOutputPrimary(x11Context.pDisplay, x11Context.rootWindow, outputId);
+#else
+        if (x11Context.pXRRSetOutputPrimary)
+            x11Context.pXRRSetOutputPrimary(x11Context.pDisplay, x11Context.rootWindow, outputId);
+#endif
+    }
+
     /* Make sure outputs crtc is set. */
     pOutputInfo->crtc = pOutputInfo->crtcs[0];
@@ -1422,14 +1439,12 @@
             /* Create a whole topology and send it to xrandr. */
             struct RANDROUTPUT aOutputs[VMW_MAX_HEADS];
-            int iRunningX = 0;
             for (int j = 0; j < x11Context.hOutputCount; ++j)
             {
-                aOutputs[j].x = iRunningX;
+                aOutputs[j].x = aMonitors[j].xOrigin;
                 aOutputs[j].y = aMonitors[j].yOrigin;
                 aOutputs[j].width = aMonitors[j].cx;
                 aOutputs[j].height = aMonitors[j].cy;
                 aOutputs[j].fEnabled = !(aMonitors[j].fDisplayFlags & VMMDEV_DISPLAY_DISABLED);
-                if (aOutputs[j].fEnabled)
-                    iRunningX += aOutputs[j].width;
+                aOutputs[j].fPrimary = (aMonitors[j].fDisplayFlags & VMMDEV_DISPLAY_PRIMARY);
             }
             /* In 32-bit guests GAs build on our release machines causes an xserver lock during vmware_ctrl extention
