Changeset 42232 in vbox
- Timestamp:
- Jul 19, 2012 4:06:17 PM (13 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/xpdm/VBoxDispDriver.cpp
r38840 r42232 1001 1001 break; 1002 1002 } 1003 case VBOXESC_ISANYX: 1004 { 1005 if (pvOut && cjOut == sizeof(DWORD)) 1006 { 1007 /* @todo: impl */ 1008 *(DWORD *)pvOut = TRUE; 1009 return 1; 1010 } 1011 else 1012 { 1013 WARN(("VBOXESC_ISANYX invalid parms")); 1014 return 0; 1015 } 1016 break; 1017 } 1003 1018 default: 1004 1019 { -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
r42228 r42232 4267 4267 break; 4268 4268 } 4269 case VBOXESC_ISANYX: 4270 { 4271 if (pEscape->PrivateDriverDataSize != sizeof (VBOXDISPIFESCAPE_ISANYX)) 4272 { 4273 WARN(("invalid private driver size %d", pEscape->PrivateDriverDataSize)); 4274 Status = STATUS_INVALID_PARAMETER; 4275 break; 4276 } 4277 4278 PVBOXDISPIFESCAPE_ISANYX pIsAnyX = (PVBOXDISPIFESCAPE_ISANYX)pEscapeHdr; 4279 pIsAnyX->u32IsAnyX = pDevExt->fAnyX; 4280 Status = STATUS_SUCCESS; 4281 break; 4282 } 4269 4283 case VBOXESC_DBGPRINT: 4270 4284 { -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDispIf.cpp
r42224 r42232 55 55 } 56 56 57 static DWORD vboxDispIfEscapeXPDM(PCVBOXDISPIF pIf, PVBOXDISPIFESCAPE pEscape, int cbData )57 static DWORD vboxDispIfEscapeXPDM(PCVBOXDISPIF pIf, PVBOXDISPIFESCAPE pEscape, int cbData, int iDirection) 58 58 { 59 59 HDC hdc = GetDC(HWND_DESKTOP); 60 60 VOID *pvData = cbData ? VBOXDISPIFESCAPE_DATA(pEscape, VOID) : NULL; 61 int iRet = ExtEscape(hdc, pEscape->escapeCode, cbData, (LPCSTR)pvData, 0, NULL); 61 int iRet = ExtEscape(hdc, pEscape->escapeCode, 62 iDirection >= 0 ? cbData : 0, 63 iDirection >= 0 ? (LPSTR)pvData : NULL, 64 iDirection <= 0 ? cbData : 0, 65 iDirection <= 0 ? (LPSTR)pvData : NULL); 62 66 ReleaseDC(HWND_DESKTOP, hdc); 63 67 if (iRet > 0) … … 353 357 case VBOXDISPIF_MODE_XPDM_NT4: 354 358 case VBOXDISPIF_MODE_XPDM: 355 return vboxDispIfEscapeXPDM(pIf, pEscape, cbData); 359 return vboxDispIfEscapeXPDM(pIf, pEscape, cbData, 1); 360 #ifdef VBOX_WITH_WDDM 361 case VBOXDISPIF_MODE_WDDM: 362 return vboxDispIfEscapeWDDM(pIf, pEscape, cbData, TRUE /* BOOL fHwAccess */); 363 #endif 364 default: 365 Log((__FUNCTION__": unknown mode (%d)\n", pIf->enmMode)); 366 return ERROR_INVALID_PARAMETER; 367 } 368 } 369 370 DWORD VBoxDispIfEscapeInOut(PCVBOXDISPIF const pIf, PVBOXDISPIFESCAPE pEscape, int cbData) 371 { 372 switch (pIf->enmMode) 373 { 374 case VBOXDISPIF_MODE_XPDM_NT4: 375 case VBOXDISPIF_MODE_XPDM: 376 return vboxDispIfEscapeXPDM(pIf, pEscape, cbData, 0); 356 377 #ifdef VBOX_WITH_WDDM 357 378 case VBOXDISPIF_MODE_WDDM: -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDispIf.h
r42224 r42232 82 82 DWORD VBoxDispIfTerm(PVBOXDISPIF pIf); 83 83 DWORD VBoxDispIfEscape(PCVBOXDISPIF const pIf, PVBOXDISPIFESCAPE pEscape, int cbData); 84 DWORD VBoxDispIfEscapeInOut(PCVBOXDISPIF const pIf, PVBOXDISPIFESCAPE pEscape, int cbData); 84 85 DWORD VBoxDispIfResize(PCVBOXDISPIF const pIf, ULONG Id, DWORD Width, DWORD Height, DWORD BitsPerPixel); 85 86 DWORD VBoxDispIfResizeModes(PCVBOXDISPIF const pIf, UINT iChangedMode, DISPLAY_DEVICE *paDisplayDevices, DEVMODE *paDeviceModes, UINT cDevModes); -
trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDisplay.cpp
r42224 r42232 33 33 const VBOXSERVICEENV *pEnv; 34 34 35 BOOL fAnyX; 36 35 37 /* ChangeDisplaySettingsEx does not exist in NT. ResizeDisplayDevice uses the function. */ 36 38 LONG (WINAPI * pfnChangeDisplaySettingsEx)(LPCTSTR lpszDeviceName, LPDEVMODE lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam); … … 107 109 } 108 110 111 VBOXDISPIFESCAPE_ISANYX IsAnyX = {0}; 112 IsAnyX.EscapeHdr.escapeCode = VBOXESC_ISANYX; 113 DWORD err = VBoxDispIfEscapeInOut(&pEnv->dispIf, &IsAnyX.EscapeHdr, sizeof (uint32_t)); 114 if (err == NO_ERROR) 115 gCtx.fAnyX = !!IsAnyX.u32IsAnyX; 116 else 117 gCtx.fAnyX = TRUE; 118 109 119 Log(("VBoxTray: VBoxDisplayInit: Display init successful\n")); 110 120 … … 208 218 { 209 219 BOOL fModeReset = (Width == 0 && Height == 0 && BitsPerPixel == 0); 220 221 if (!gCtx.fAnyX) 222 Width &= 0xFFF8; 210 223 211 224 DISPLAY_DEVICE DisplayDevice; -
trunk/src/VBox/Additions/WINNT/include/VBoxDisplay.h
r42217 r42232 37 37 # define VBOXESC_REINITVIDEOMODESBYMASK 0xABCD9010 38 38 # define VBOXESC_ADJUSTVIDEOMODES 0xABCD9011 39 #endif /* #ifdef VBOX_WITH_WDDM */ 39 40 40 /* for VBOX_VIDEO_MAX_SCREENS definition */ 41 #include <VBox/Hardware/VBoxVideoVBE.h> 42 43 #endif /* #ifdef VBOX_WITH_WDDM */ 41 # define VBOXESC_ISANYX 0xABCD9200 44 42 45 43 typedef struct VBOXDISPIFESCAPE … … 60 58 CTL_CODE(FILE_DEVICE_VIDEO, 0xA01, METHOD_BUFFERED, FILE_ANY_ACCESS) 61 59 60 #define IOCTL_VIDEO_VBOX_ISANYX \ 61 CTL_CODE(FILE_DEVICE_VIDEO, 0xA02, METHOD_BUFFERED, FILE_ANY_ACCESS) 62 63 typedef struct VBOXDISPIFESCAPE_ISANYX 64 { 65 VBOXDISPIFESCAPE EscapeHdr; 66 uint32_t u32IsAnyX; 67 } VBOXDISPIFESCAPE_ISANYX, *PVBOXDISPIFESCAPE_ISANYX; 68 62 69 #ifdef VBOX_WITH_WDDM 70 71 /* for VBOX_VIDEO_MAX_SCREENS definition */ 72 #include <VBox/Hardware/VBoxVideoVBE.h> 63 73 64 74 typedef struct
Note:
See TracChangeset
for help on using the changeset viewer.