Changeset 61548 in vbox for trunk/src/VBox/Additions/WINNT/VBoxTray
- Timestamp:
- Jun 7, 2016 5:01:38 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 107887
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDispIf.cpp
r61530 r61548 1341 1341 } 1342 1342 1343 /* The code below was commented out because VBOXESC_UPDATEMODES should not cause (un)plugging virtual displays. 1343 1344 winEr = vboxDispIfWaitDisplayDataInited(pOp); 1344 1345 if (winEr != NO_ERROR) 1345 1346 WARN(("VBoxTray: (WDDM) Failed vboxDispIfWaitDisplayDataInited winEr %d\n", winEr)); 1346 1347 */ 1347 1348 return winEr; 1348 1349 } … … 1379 1380 static DWORD vboxDispIfResizePerform(PCVBOXDISPIF const pIf, UINT iChangedMode, BOOL fEnable, BOOL fExtDispSup, DISPLAY_DEVICE *paDisplayDevices, DEVMODE *paDeviceModes, UINT cDevModes) 1380 1381 { 1382 LogFunc((" ENTER")); 1381 1383 DWORD winEr; 1384 1382 1385 if (pIf->enmMode > VBOXDISPIF_MODE_WDDM) 1383 1386 { … … 1392 1395 WARN(("VBoxTray: (WDDM) Failed vboxDispIfWddmResizeDisplayVista winEr %d\n", winEr)); 1393 1396 } 1397 1398 LogFunc((" LEAVE")); 1394 1399 return winEr; 1395 1400 } … … 1399 1404 DWORD winEr = NO_ERROR; 1400 1405 1401 Log(("VBoxTray: vboxDispIfResizeModesWDDM iChanged %d cDevModes %d \n", iChangedMode, cDevModes));1406 Log(("VBoxTray: vboxDispIfResizeModesWDDM iChanged %d cDevModes %d fEnable %d fExtDispSup %d\n", iChangedMode, cDevModes, fEnable, fExtDispSup)); 1402 1407 VBoxRrRetryStop(); 1403 1408 … … 1430 1435 } 1431 1436 1432 D3DKMT_INVALIDATEACTIVEVIDPN DdiData = {0}; 1433 1434 DdiData.hAdapter = Op.Adapter.hAdapter; 1435 DdiData.pPrivateDriverData = &VidPnData; 1436 DdiData.PrivateDriverDataSize = sizeof (VidPnData); 1437 1438 NTSTATUS Status = Op.pIf->modeData.wddm.KmtCallbacks.pfnD3DKMTInvalidateActiveVidPn(&DdiData); 1439 LogFunc(("InvalidateActiveVidPn 0x%08x\n", Status)); 1437 /* The pfnD3DKMTInvalidateActiveVidPn was deprecated since Win7 and causes deadlocks since Win10 TH2. 1438 Instead, the VidPn Manager can replace an old VidPn as soon as SetDisplayConfig or ChangeDisplaySettingsEx will try to set a new display mode. 1439 On Vista D3DKMTInvalidateActiveVidPn is still required. TBD: Get rid of it. */ 1440 if (Op.pIf->enmMode < VBOXDISPIF_MODE_WDDM_W7) 1441 { 1442 D3DKMT_INVALIDATEACTIVEVIDPN DdiData = {0}; 1443 1444 DdiData.hAdapter = Op.Adapter.hAdapter; 1445 DdiData.pPrivateDriverData = &VidPnData; 1446 DdiData.PrivateDriverDataSize = sizeof (VidPnData); 1447 1448 NTSTATUS Status; 1449 Status = Op.pIf->modeData.wddm.KmtCallbacks.pfnD3DKMTInvalidateActiveVidPn(&DdiData); 1450 LogFunc(("D3DKMTInvalidateActiveVidPn returned %d)\n", Status)); 1451 } 1440 1452 1441 1453 /* Resize displays always to keep the display layout because … … 1451 1463 Size.cx = paDeviceModes[iChangedMode].dmPelsWidth; 1452 1464 Size.cy = paDeviceModes[iChangedMode].dmPelsHeight; 1465 LogFunc(("Calling vboxDispIfUpdateModesWDDM to change target %d mode to (%d x %d)\n", iChangedMode, Size.cx, Size.cy)); 1453 1466 winEr = vboxDispIfUpdateModesWDDM(&Op, iChangedMode, &Size); 1467 LogFunc(("vboxDispIfUpdateModesWDDM returned %d\n", winEr)); 1468 1454 1469 if (winEr != NO_ERROR) 1455 1470 WARN(("vboxDispIfUpdateModesWDDM failed %d\n", winEr)); … … 1460 1475 winEr = vboxDispIfResizePerform(pIf, i, fEnable, fExtDispSup, paDisplayDevices, paDeviceModes, cDevModes); 1461 1476 1477 LogFunc(("vboxDispIfResizePerform returned %d\n", winEr)); 1478 1462 1479 if (winEr == ERROR_RETRY) 1463 1480 { 1464 1481 VBoxRrRetrySchedule(pIf, i, fEnable, fExtDispSup, paDisplayDevices, paDeviceModes, cDevModes); 1465 /* just pretend everything is fine so far */ 1482 1466 1483 winEr = NO_ERROR; 1467 1484 }
Note:
See TracChangeset
for help on using the changeset viewer.