Changeset 33929 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Display
- Timestamp:
- Nov 10, 2010 9:31:48 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 67586
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispCm.cpp
r33540 r33929 137 137 pContext->pDevice = pDevice; 138 138 } 139 else 140 { 141 exit(1); 142 } 143 139 144 return hr; 140 145 } … … 190 195 if (!pCmd->Hdr.cbCmdsReturned && !pCmd->Hdr.cbRemainingFirstCmd) 191 196 hr = S_FALSE; 197 } 198 else 199 { 200 exit(1); 192 201 } 193 202 } -
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxUhgsmiKmt.cpp
r33715 r33929 572 572 } 573 573 574 HRESULT vboxDispKmtAdpHdcCreate(HDC *phDc) 575 { 576 HRESULT hr = E_FAIL; 577 DISPLAY_DEVICE DDev; 578 memset(&DDev, 0, sizeof (DDev)); 579 DDev.cb = sizeof (DDev); 580 581 for (int i = 0; ; ++i) 582 { 583 if (EnumDisplayDevices(NULL, /* LPCTSTR lpDevice */ i, /* DWORD iDevNum */ 584 &DDev, 0 /* DWORD dwFlags*/)) 585 { 586 if (DDev.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) 587 { 588 HDC hDc = CreateDC(NULL, DDev.DeviceName, NULL, NULL); 589 if (hDc) 590 { 591 *phDc = hDc; 592 return S_OK; 593 } 594 else 595 { 596 DWORD winEr = GetLastError(); 597 Assert(0); 598 hr = HRESULT_FROM_WIN32(winEr); 599 Assert(FAILED(hr)); 600 break; 601 } 602 } 603 } 604 else 605 { 606 DWORD winEr = GetLastError(); 607 Assert(0); 608 hr = HRESULT_FROM_WIN32(winEr); 609 Assert(FAILED(hr)); 610 break; 611 } 612 } 613 614 return hr; 615 } 616 574 617 HRESULT vboxDispKmtOpenAdapter(PVBOXDISPKMT_CALLBACKS pCallbacks, PVBOXDISPKMT_ADAPTER pAdapter) 575 618 { 576 D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME OpenAdapterData = {0}; 577 wcsncpy(OpenAdapterData.DeviceName, L"\\\\.\\DISPLAY1", RT_ELEMENTS(OpenAdapterData.DeviceName) - 1 /* the last one is always \0 */); 578 HRESULT hr = S_OK; 579 NTSTATUS Status = pCallbacks->pfnD3DKMTOpenAdapterFromGdiDisplayName(&OpenAdapterData); 580 Assert(!Status); 581 if (!Status) 582 { 583 pAdapter->hAdapter = OpenAdapterData.hAdapter; 584 pAdapter->pCallbacks = pCallbacks; 585 return S_OK; 586 } 587 else 588 { 589 Log((__FUNCTION__": pfnD3DKMTOpenAdapterFromGdiDisplayName failed, Status (0x%x)\n", Status)); 590 hr = E_FAIL; 619 D3DKMT_OPENADAPTERFROMHDC OpenAdapterData = {0}; 620 OpenAdapterData.hDc = GetWindowDC(NULL); 621 HRESULT hr = vboxDispKmtAdpHdcCreate(&OpenAdapterData.hDc); 622 if (OpenAdapterData.hDc) 623 { 624 NTSTATUS Status = pCallbacks->pfnD3DKMTOpenAdapterFromHdc(&OpenAdapterData); 625 Assert(!Status); 626 if (!Status) 627 { 628 pAdapter->hAdapter = OpenAdapterData.hAdapter; 629 pAdapter->hDc = OpenAdapterData.hDc; 630 pAdapter->pCallbacks = pCallbacks; 631 return S_OK; 632 } 633 else 634 { 635 Log((__FUNCTION__": pfnD3DKMTOpenAdapterFromGdiDisplayName failed, Status (0x%x)\n", Status)); 636 hr = E_FAIL; 637 } 638 639 ReleaseDC(NULL, OpenAdapterData.hDc); 591 640 } 592 641 593 642 return hr; 594 595 643 } 596 644 … … 603 651 if (!Status) 604 652 { 653 ReleaseDC(NULL, pAdapter->hDc); 605 654 return S_OK; 606 655 } 607 656 608 657 Log((__FUNCTION__": pfnD3DKMTCloseAdapter failed, Status (0x%x)\n", Status)); 609 /* ignore */ 610 Status = 0; 658 611 659 return E_FAIL; 612 660 } -
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxUhgsmiKmt.h
r33530 r33929 52 52 { 53 53 D3DKMT_HANDLE hAdapter; 54 HDC hDc; 54 55 PVBOXDISPKMT_CALLBACKS pCallbacks; 55 56 }VBOXDISPKMT_ADAPTER, *PVBOXDISPKMT_ADAPTER;
Note:
See TracChangeset
for help on using the changeset viewer.