Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 52978)
@@ -1332,5 +1332,6 @@
             ULONG width, height, bpp;
             LONG xOrigin, yOrigin;
-            CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(iScreen, &width, &height, &bpp, &xOrigin, &yOrigin));
+            GuestMonitorStatus_T monitorStatus;
+            CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(iScreen, &width, &height, &bpp, &xOrigin, &yOrigin, &monitorStatus));
             com::SafeArray<BYTE> saScreenshot;
             CHECK_ERROR_BREAK(pDisplay, TakeScreenShotToArray(iScreen, width, height, BitmapFormat_PNG, ComSafeArrayAsOutParam(saScreenshot)));
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 52978)
@@ -1682,5 +1682,6 @@
             ULONG xRes, yRes, bpp;
             LONG xOrigin, yOrigin;
-            rc = display->GetScreenResolution(0, &xRes, &yRes, &bpp, &xOrigin, &yOrigin);
+            GuestMonitorStatus_T monitorStatus;
+            rc = display->GetScreenResolution(0, &xRes, &yRes, &bpp, &xOrigin, &yOrigin, &monitorStatus);
             if (rc == E_ACCESSDENIED)
                 break; /* VM not powered up */
@@ -1692,7 +1693,16 @@
             }
             if (details == VMINFO_MACHINEREADABLE)
-                RTPrintf("VideoMode=\"%d,%d,%d\"@%d,%d\n", xRes, yRes, bpp, xOrigin, yOrigin);
-            else
-                RTPrintf("Video mode:      %dx%dx%d at %d,%d\n", xRes, yRes, bpp, xOrigin, yOrigin);
+                RTPrintf("VideoMode=\"%d,%d,%d\"@%d,%d %d\n", xRes, yRes, bpp, xOrigin, yOrigin, monitorStatus);
+            else
+            {
+                const char *pszMonitorStatus = "unknown status";
+                switch (monitorStatus)
+                {
+                    case GuestMonitorStatus_Enabled:  pszMonitorStatus = "enabled"; break;
+                    case GuestMonitorStatus_Disabled: pszMonitorStatus = "disabled"; break;
+                    default: break;
+                }
+                RTPrintf("Video mode:      %dx%dx%d at %d,%d %s\n", xRes, yRes, bpp, xOrigin, yOrigin, pszMonitorStatus);
+            }
         }
         while (0);
Index: /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp	(revision 52978)
@@ -2016,5 +2016,6 @@
         ULONG dummy;
         LONG xOrigin, yOrigin;
-        rc = gpDisplay->GetScreenResolution(i, &dummy, &dummy, &dummy, &xOrigin, &yOrigin);
+        GuestMonitorStatus_T monitorStatus;
+        rc = gpDisplay->GetScreenResolution(i, &dummy, &dummy, &dummy, &xOrigin, &yOrigin, &monitorStatus);
         gpFramebuffer[i]->setOrigin(xOrigin, yOrigin);
     }
@@ -2295,5 +2296,6 @@
                         /* update xOrigin, yOrigin -> mouse */
                         ULONG dummy;
-                        rc = gpDisplay->GetScreenResolution(event.user.code, &dummy, &dummy, &dummy, &xOrigin, &yOrigin);
+                        GuestMonitorStatus_T monitorStatus;
+                        rc = gpDisplay->GetScreenResolution(event.user.code, &dummy, &dummy, &dummy, &xOrigin, &yOrigin, &monitorStatus);
                         gpFramebuffer[event.user.code]->setOrigin(xOrigin, yOrigin);
                         break;
@@ -2814,5 +2816,6 @@
                 /* update xOrigin, yOrigin -> mouse */
                 ULONG dummy;
-                rc = gpDisplay->GetScreenResolution(event.user.code, &dummy, &dummy, &dummy, &xOrigin, &yOrigin);
+                GuestMonitorStatus_T monitorStatus;
+                rc = gpDisplay->GetScreenResolution(event.user.code, &dummy, &dummy, &dummy, &xOrigin, &yOrigin, &monitorStatus);
                 gpFramebuffer[event.user.code]->setOrigin(xOrigin, yOrigin);
                 break;
Index: /trunk/src/VBox/Frontends/VBoxShell/vboxshell.py
===================================================================
--- /trunk/src/VBox/Frontends/VBoxShell/vboxshell.py	(revision 52977)
+++ /trunk/src/VBox/Frontends/VBoxShell/vboxshell.py	(revision 52978)
@@ -545,5 +545,5 @@
     else:
         screen = 0
-    (fbw, fbh, _fbbpp, fbx, fby) = display.getScreenResolution(screen)
+    (fbw, fbh, _fbbpp, fbx, fby, _) = display.getScreenResolution(screen)
     if len(args) > 1:
         w = int(args[1])
@@ -572,5 +572,5 @@
     else:
         screen = 0
-    (fbw, fbh, _fbbpp, fbx, fby) = display.getScreenResolution(screen)
+    (fbw, fbh, _fbbpp, fbx, fby, _) = display.getScreenResolution(screen)
     if len(args) > 1:
         w = int(args[1])
Index: /trunk/src/VBox/Frontends/VirtualBox/src/UIVMInfoDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/UIVMInfoDialog.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/UIVMInfoDialog.cpp	(revision 52978)
@@ -575,5 +575,6 @@
         LONG xOrigin = 0;
         LONG yOrigin = 0;
-        console.GetDisplay().GetScreenResolution(0, uWidth, uHeight, uBpp, xOrigin, yOrigin);
+        KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
+        console.GetDisplay().GetScreenResolution(0, uWidth, uHeight, uBpp, xOrigin, yOrigin, monitorStatus);
         QString strResolution = QString("%1x%2").arg(uWidth).arg(uHeight);
         if (uBpp)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBuffer.cpp	(revision 52978)
@@ -643,7 +643,8 @@
         LONG xOrigin = 0;
         LONG yOrigin = 0;
+        KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
         CDisplay display = m_pMachineView->uisession()->session().GetConsole().GetDisplay();
         display.GetScreenResolution(m_pMachineView->screenId(),
-                                    ulWidth, ulHeight, ulGuestBitsPerPixel, xOrigin, yOrigin);
+                                    ulWidth, ulHeight, ulGuestBitsPerPixel, xOrigin, yOrigin, monitorStatus);
 
         /* Remind user if necessary, ignore text and VGA modes: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 52978)
@@ -2342,5 +2342,6 @@
         LONG xOrigin = 0;
         LONG yOrigin = 0;
-        display.GetScreenResolution(i, width, height, bpp, xOrigin, yOrigin);
+        KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
+        display.GetScreenResolution(i, width, height, bpp, xOrigin, yOrigin, monitorStatus);
         uMaxWidth  += width;
         uMaxHeight  = RT_MAX(uMaxHeight, height);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp	(revision 52978)
@@ -962,5 +962,6 @@
             LONG xShift = 0, yShift = 0;
             ULONG dummy;
-            session().GetConsole().GetDisplay().GetScreenResolution(uScreenId, dummy, dummy, dummy, xShift, yShift);
+            KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
+            session().GetConsole().GetDisplay().GetScreenResolution(uScreenId, dummy, dummy, dummy, xShift, yShift, monitorStatus);
             /* Set shifting: */
             cpnt.setX(cpnt.x() + xShift);
@@ -1027,5 +1028,6 @@
     LONG xShift = 0, yShift = 0;
     ULONG dummy;
-    session().GetConsole().GetDisplay().GetScreenResolution(uScreenId, dummy, dummy, dummy, xShift, yShift);
+    KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
+    session().GetConsole().GetDisplay().GetScreenResolution(uScreenId, dummy, dummy, dummy, xShift, yShift, monitorStatus);
 
     /* Pass all multi-touch events into guest: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMultiScreenLayout.cpp	(revision 52978)
@@ -317,5 +317,6 @@
         else
             screen = QApplication::desktop()->screenGeometry(screenLayout.value(iGuestScreen, 0));
-        display.GetScreenResolution(iGuestScreen, width, height, guestBpp, xOrigin, yOrigin);
+        KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
+        display.GetScreenResolution(iGuestScreen, width, height, guestBpp, xOrigin, yOrigin, monitorStatus);
         usedBits += screen.width() * /* display width */
                     screen.height() * /* display height */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineLogicNormal.cpp	(revision 52978)
@@ -205,6 +205,7 @@
     ULONG uWidth, uHeight, uBitsPerPixel;
     LONG uOriginX, uOriginY;
+    KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
     CDisplay display = session().GetConsole().GetDisplay();
-    display.GetScreenResolution(iIndex, uWidth, uHeight, uBitsPerPixel, uOriginX, uOriginY);
+    display.GetScreenResolution(iIndex, uWidth, uHeight, uBitsPerPixel, uOriginX, uOriginY, monitorStatus);
     if (!fEnabled)
         display.SetVideoModeHint(iIndex, false, false, 0, 0, 0, 0, 0);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGMachinePreview.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGMachinePreview.cpp	(revision 52977)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGMachinePreview.cpp	(revision 52978)
@@ -241,5 +241,6 @@
                     LONG iOriginX, iOriginY;
                     ULONG uGuestWidth, uGuestHeight, uBpp;
-                    display.GetScreenResolution(0, uGuestWidth, uGuestHeight, uBpp, iOriginX, iOriginY);
+                    KGuestMonitorStatus monitorStatus = KGuestMonitorStatus_Enabled;
+                    display.GetScreenResolution(0, uGuestWidth, uGuestHeight, uBpp, iOriginX, iOriginY, monitorStatus);
                     double dAspectRatio = (double)uGuestWidth / uGuestHeight;
                     /* Look for the best aspect-ratio preset preset: */
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp	(revision 52977)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp	(revision 52978)
@@ -1125,5 +1125,6 @@
                             CHECK_ERROR_RET(pFramebuffer, COMGETTER(Height)(&h), rc);
                             ULONG dummy;
-                            CHECK_ERROR_RET(pDisplay, GetScreenResolution(i, &dummy, &dummy, &dummy, &xo, &yo), rc);
+                            GuestMonitorStatus_T monitorStatus;
+                            CHECK_ERROR_RET(pDisplay, GetScreenResolution(i, &dummy, &dummy, &dummy, &xo, &yo, &monitorStatus), rc);
 
                             rc = crVBoxServerMapScreen(i, xo, yo, w, h, winId);
@@ -1252,5 +1253,6 @@
                             CHECK_ERROR_BREAK(pFramebuffer, COMGETTER(Height)(&h));
                             ULONG dummy;
-                            CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(screenId, &dummy, &dummy, &dummy, &xo, &yo));
+                            GuestMonitorStatus_T monitorStatus;
+                            CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(screenId, &dummy, &dummy, &dummy, &xo, &yo, &monitorStatus));
 
                             rc = crVBoxServerMapScreen(screenId, xo, yo, w, h, winId);
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 52977)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 52978)
@@ -15700,7 +15700,28 @@
   </interface>
 
+  <enum
+    name="GuestMonitorStatus"
+    uuid="a0001cb1-97c9-496d-82bc-616c19a9e212"
+    >
+    <desc>
+      The current status of the guest display.
+    </desc>
+
+    <const name="Disabled" value="0">
+      <desc>
+        The guest monitor is disabled in the guest.
+      </desc>
+    </const>
+
+    <const name="Enabled" value="1">
+      <desc>
+        The guest monitor is enabled in the guest.
+      </desc>
+    </const>
+  </enum>
+
   <interface
     name="IDisplay" extends="$unknown"
-    uuid="fb51010f-eefd-430d-8cd7-3c1bc14740eb"
+    uuid="dc19253d-e6b8-4b2c-8923-c8ecf80d1909"
     wsmap="managed"
     wrap-hint-server-addinterfaces="IEventListener"
@@ -15733,4 +15754,5 @@
       <param name="xOrigin" type="long" dir="out"/>
       <param name="yOrigin" type="long" dir="out"/>
+      <param name="guestMonitorStatus" type="GuestMonitorStatus" dir="out"/>
     </method>
 
Index: /trunk/src/VBox/Main/include/DisplayImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 52977)
+++ /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 52978)
@@ -194,5 +194,5 @@
                                           ULONG *pcy, ULONG *pcBPP, LONG *pXOrigin, LONG *pYOrigin)
     {
-        return getScreenResolution(cScreen, pcx, pcy, pcBPP, pXOrigin, pYOrigin);
+        return getScreenResolution(cScreen, pcx, pcy, pcBPP, pXOrigin, pYOrigin, NULL);
     }
     virtual void i_getFramebufferDimensions(int32_t *px1, int32_t *py1,
@@ -210,5 +210,6 @@
                                         ULONG *aBitsPerPixel,
                                         LONG *aXOrigin,
-                                        LONG *aYOrigin);
+                                        LONG *aYOrigin,
+                                        GuestMonitorStatus_T *aGuestMonitorStatus);
     virtual HRESULT attachFramebuffer(ULONG aScreenId,
                                       const ComPtr<IFramebuffer> &aFramebuffer);
Index: /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 52977)
+++ /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 52978)
@@ -1104,6 +1104,7 @@
         {
             ULONG dummy;
+            GuestMonitorStatus_T monitorStatus;
             hr = server->mConsole->i_getDisplay()->GetScreenResolution(uScreenId, &dummy, &dummy, &dummy,
-                                                                     &xOrigin, &yOrigin);
+                                                                       &xOrigin, &yOrigin, &monitorStatus);
 
             if (SUCCEEDED(hr))
Index: /trunk/src/VBox/Main/src-client/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 52977)
+++ /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 52978)
@@ -1448,5 +1448,5 @@
 /////////////////////////////////////////////////////////////////////////////
 HRESULT Display::getScreenResolution(ULONG aScreenId, ULONG *aWidth, ULONG *aHeight, ULONG *aBitsPerPixel,
-                                     LONG *aXOrigin, LONG *aYOrigin)
+                                     LONG *aXOrigin, LONG *aYOrigin, GuestMonitorStatus_T *aGuestMonitorStatus)
 {
     LogRelFlowFunc(("aScreenId=%RU32\n", aScreenId));
@@ -1459,4 +1459,5 @@
     int32_t xOrigin = 0;
     int32_t yOrigin = 0;
+    bool fEnabled = true;
 
     if (aScreenId == VBOX_VIDEO_PRIMARY_SCREEN)
@@ -1483,4 +1484,5 @@
         xOrigin = pFBInfo->xOrigin;
         yOrigin = pFBInfo->yOrigin;
+        fEnabled = !RT_BOOL(pFBInfo->flags & VBVA_SCREEN_F_DISABLED);
     }
     else
@@ -1499,4 +1501,6 @@
     if (aYOrigin)
         *aYOrigin = yOrigin;
+    if (aGuestMonitorStatus)
+        *aGuestMonitorStatus = fEnabled? GuestMonitorStatus_Enabled: GuestMonitorStatus_Disabled;
 
     return S_OK;
Index: /trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp	(revision 52977)
+++ /trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp	(revision 52978)
@@ -478,6 +478,7 @@
     ULONG dummy;
     LONG xShift, yShift;
+    GuestMonitorStatus_T monitorStatus;
     hr = pDisplay->GetScreenResolution(uScreenId, &dummy, &dummy, &dummy,
-                                       &xShift, &yShift);
+                                       &xShift, &yShift, &monitorStatus);
     if (FAILED(hr))
         return hr;
Index: /trunk/src/VBox/Main/webservice/samples/php/clienttest.php
===================================================================
--- /trunk/src/VBox/Main/webservice/samples/php/clienttest.php	(revision 52977)
+++ /trunk/src/VBox/Main/webservice/samples/php/clienttest.php	(revision 52978)
@@ -58,9 +58,9 @@
             $console = $session->console;
             $display = $console->display;
-            list($screenWidth, $screenHeight, $screenBpp, $screenX, $screenY) = $display->getScreenResolution(0 /* First screen */);             
+            list($screenWidth, $screenHeight, $screenBpp, $screenX, $screenY, $screenStatus) = $display->getScreenResolution(0 /* First screen */);
 
             $imageraw = $display->takeScreenShotToArray(0 /* First screen */, $screenWidth, $screenHeight, "RGBA");
             echo "Screenshot size: " . sizeof($imageraw) . "\n";
-            
+
             $filename = 'screenshot.png';
             echo "Saving screenshot of " . $machine->name . " (${screenWidth}x${screenHeight}, ${screenBpp}BPP) to $filename\n";
Index: /trunk/src/VBox/Main/webservice/samples/python/clienttest.py
===================================================================
--- /trunk/src/VBox/Main/webservice/samples/python/clienttest.py	(revision 52977)
+++ /trunk/src/VBox/Main/webservice/samples/python/clienttest.py	(revision 52978)
@@ -101,5 +101,5 @@
                 # Get the VM's current display resolution + bit depth + position
                 screenNum = 0 # From first screen
-                (screenW, screenH, screenBPP, screenX, screenY) = display.getScreenResolution(screenNum)
+                (screenW, screenH, screenBPP, screenX, screenY, _) = display.getScreenResolution(screenNum)
                 print "    Display (%d):     %dx%d, %d BPP at %d,%d"  %(screenNum, screenW, screenH, screenBPP, screenX, screenY)
 
Index: /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 52977)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 52978)
@@ -2220,5 +2220,5 @@
         """
         try:
-            iWidth, iHeight, _, _, _ = self.o.console.display.getScreenResolution(iScreenId)
+            iWidth, iHeight, _, _, _, _ = self.o.console.display.getScreenResolution(iScreenId)
             if self.fpApiVer >= 4.4:
                 aPngData = self.o.console.display.takeScreenShotToArray(iScreenId, iWidth, iHeight,
