Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVidPn.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVidPn.cpp	(revision 30925)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoVidPn.cpp	(revision 30926)
@@ -1626,5 +1626,5 @@
         CONST D3DKMDT_VIDPN_SOURCE_MODE* pPinnedVidPnSourceModeInfo;
         Status = pCurVidPnSourceModeSetInterface->pfnAcquirePinnedModeInfo(hCurVidPnSourceModeSet, &pPinnedVidPnSourceModeInfo);
-        Assert(Status == STATUS_SUCCESS);
+        Assert(Status == STATUS_SUCCESS || Status == STATUS_GRAPHICS_MODE_NOT_PINNED);
         if (Status == STATUS_SUCCESS)
         {
@@ -1665,5 +1665,8 @@
         }
         else if (Status == STATUS_GRAPHICS_MODE_NOT_PINNED)
-            drprintf((__FUNCTION__": no pPinnedVidPnSourceModeInfo available for source id (%d)\n", srcId));
+        {
+            Status = vboxVidPnCommitSourceMode(pDevExt, srcId, pPinnedVidPnSourceModeInfo, pAllocation);
+            Assert(Status == STATUS_SUCCESS);
+        }
         else
             drprintf((__FUNCTION__": pfnAcquirePinnedModeInfo failed Status(0x%x)\n", Status));
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp	(revision 30925)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoWddm.cpp	(revision 30926)
@@ -1132,5 +1132,5 @@
 
     /* @todo: */
-    vboxVDbgBreakF();
+//    vboxVDbgBreakF();
 
     dfprintf(("<== "__FUNCTION__ ", context(0x%x)\n", MiniportDeviceContext));
@@ -3212,21 +3212,28 @@
         PVBOXWDDM_ALLOCATION pAllocation = pSource->pPrimaryAllocation;
 
-        Assert(pAllocation->bVisible != pSetVidPnSourceVisibility->Visible);
-        if (pAllocation->bVisible != pSetVidPnSourceVisibility->Visible)
-        {
-            pAllocation->bVisible = pSetVidPnSourceVisibility->Visible;
+        if (pAllocation)
+        {
+            Assert(pAllocation->bVisible != pSetVidPnSourceVisibility->Visible);
+            if (pAllocation->bVisible != pSetVidPnSourceVisibility->Visible)
+            {
+                pAllocation->bVisible = pSetVidPnSourceVisibility->Visible;
 #ifndef VBOXWDDM_RENDER_FROM_SHADOW
-            if (pAllocation->bVisible)
-            {
-                Status = vboxWddmGhDisplaySetInfo(pDevExt, pSource);
-                Assert(Status == STATUS_SUCCESS);
-                if (Status != STATUS_SUCCESS)
-                    drprintf((__FUNCTION__": vboxWddmGhDisplaySetInfo failed, Status (0x%x)\n", Status));
-            }
-            else
-            {
-                vboxVdmaFlush (pDevExt, &pDevExt->u.primary.Vdma);
-            }
+                if (pAllocation->bVisible)
+                {
+                    Status = vboxWddmGhDisplaySetInfo(pDevExt, pSource);
+                    Assert(Status == STATUS_SUCCESS);
+                    if (Status != STATUS_SUCCESS)
+                        drprintf((__FUNCTION__": vboxWddmGhDisplaySetInfo failed, Status (0x%x)\n", Status));
+                }
+                else
+                {
+                    vboxVdmaFlush (pDevExt, &pDevExt->u.primary.Vdma);
+                }
 #endif
+            }
+        }
+        else
+        {
+            Assert(!pSetVidPnSourceVisibility->Visible);
         }
     }
