Index: /trunk/src/VBox/Main/src-client/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 35611)
+++ /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 35612)
@@ -774,5 +774,9 @@
             pFBInfo->fDefaultFormat = (usesGuestVRAM == FALSE);
 
-            mpDrv->pUpPort->pfnSetRenderVRAM (mpDrv->pUpPort, pFBInfo->fDefaultFormat);
+            if (pFBInfo->fDisabled)
+                mpDrv->pUpPort->pfnSetRenderVRAM (mpDrv->pUpPort, false);
+            else
+                mpDrv->pUpPort->pfnSetRenderVRAM (mpDrv->pUpPort,
+                                                  pFBInfo->fDefaultFormat);
         }
         else if (!pFBInfo->pFramebuffer.isNull())
@@ -919,5 +923,6 @@
 
     // if there is no framebuffer, this call is not interesting
-    if (pFramebuffer == NULL)
+    if (   pFramebuffer == NULL
+        || maFramebuffers[uScreenId].fDisabled)
         return;
 
@@ -964,7 +969,7 @@
     if (!mpDrv)
         return;
-    /* If VBVA is not in use then maFramebuffers will be zeroed out and this
+    /* If VBVA is not in use then this flag will not be set and this
      * will still work as it should. */
-    if (!(maFramebuffers[0].flags & VBVA_SCREEN_F_DISABLED))
+    if (!(maFramebuffers[0].fDisabled))
     {
         x2 = mpDrv->IConnector.cx + (int32_t)maFramebuffers[0].xOrigin;
@@ -973,5 +978,5 @@
     for (unsigned i = 1; i < mcMonitors; ++i)
     {
-        if (!(maFramebuffers[i].flags & VBVA_SCREEN_F_DISABLED))
+        if (!(maFramebuffers[i].fDisabled))
         {
             x1 = RT_MIN(x1, maFramebuffers[i].xOrigin);
@@ -2542,5 +2547,5 @@
                  */
                 if (   pFBInfo->fDefaultFormat
-                    && !(pFBInfo->flags & VBVA_SCREEN_F_DISABLED))
+                    && !(pFBInfo->fDisabled))
                 {
                     address = NULL;
@@ -2667,5 +2672,5 @@
         {
             if (   !pFBInfo->pFramebuffer.isNull()
-                && !(pFBInfo->flags & VBVA_SCREEN_F_DISABLED))
+                && !(pFBInfo->fDisabled))
             {
                 /* Render complete VRAM screen to the framebuffer.
@@ -2836,7 +2841,5 @@
     IFramebuffer *pFramebuffer = maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].pFramebuffer;
 
-    if (   pFramebuffer
-        && !(  maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN].flags
-             & VBVA_SCREEN_F_DISABLED))
+    if (pFramebuffer)
     {
         HRESULT rc;
@@ -3595,10 +3598,12 @@
         {
             /* Make sure that framebuffer contains the same image as the guest VRAM. */
-            if (uScreenId == VBOX_VIDEO_PRIMARY_SCREEN && !pFBInfo->pFramebuffer.isNull())
+            if (   uScreenId == VBOX_VIDEO_PRIMARY_SCREEN
+                && !pFBInfo->pFramebuffer.isNull()
+                && !pFBInfo->fDisabled)
             {
                 pDrv->pUpPort->pfnUpdateDisplayRect (pDrv->pUpPort, pCmd->x, pCmd->y, pCmd->w, pCmd->h);
             }
             else if (   !pFBInfo->pFramebuffer.isNull()
-                     && !(pFBInfo->flags & VBVA_SCREEN_F_DISABLED))
+                     && !(pFBInfo->fDisabled))
             {
                 /* Render VRAM content to the framebuffer. */
@@ -3723,5 +3728,6 @@
         pThis->handleDisplayResize(pScreen->u32ViewIndex, 0,
                                    (uint8_t *)NULL,
-                                   0, 640, 480, pScreen->u16Flags);
+                                   pScreen->u32LineSize, pScreen->u32Width,
+                                   pScreen->u32Height, pScreen->u16Flags);
 
         fireGuestMonitorChangedEvent(pThis->mParent->getEventSource(),
