return true;\r
}\r
\r
-int wf_mirage_step3(wfPeerContext* context)\r
+/*\r
+This function will attempt to apply the currently configured display settings \r
+in the registry to the display driver. It will return true if successful \r
+otherwise it returns false.\r
+*/\r
+BOOL wf_update_mirror_drv(wfPeerContext* context)\r
{\r
+ int currentScreenPixH, currentScreenPixW, currentScreenBPP;\r
+ HDC dc;\r
LONG status;\r
DWORD* extHdr;\r
WORD drvExtraSaved;\r
DEVMODE* deviceMode;\r
DWORD dmf_devmodewext_magic_sig = 0xDF20C0DE;\r
-\r
+ _tchar rMsg[64];\r
+ BOOL rturn;\r
+ \r
+ /*\r
+ Will have to come back to this for supporting non primary displays and \r
+ multimonitor setups\r
+ */\r
+ dc = GetDC(NULL);\r
+ currentScreenPixH = GetDeviceCaps(dc, HORZRES);\r
+ currentScreenPixW = GetDeviceCaps(dc, VERTRES);\r
+ currentScreenBPP = GetDeviceCaps(dc, BITSPIXEL);\r
+ ReleaseDC(NULL, dc);\r
+ \r
+ _tprintf(_T("Detected current screen settings: %dx%dx%d\n"), currentScreenPixH, currentScreenPixW, currentScreenBPP);\r
+ \r
deviceMode = (DEVMODE*) malloc(sizeof(DEVMODE) + EXT_DEVMODE_SIZE_MAX);\r
deviceMode->dmDriverExtra = 2 * sizeof(DWORD);\r
\r
deviceMode->dmSize = sizeof(DEVMODE);\r
deviceMode->dmDriverExtra = drvExtraSaved;\r
\r
- deviceMode->dmPelsWidth = 640;\r
- deviceMode->dmPelsHeight = 480;\r
- deviceMode->dmBitsPerPel = 32;\r
+ deviceMode->dmPelsWidth = currentScreenPixW;\r
+ deviceMode->dmPelsHeight = currentScreenPixH;\r
+ deviceMode->dmBitsPerPel = currentScreenBPP;\r
deviceMode->dmPosition.x = 0;\r
deviceMode->dmPosition.y = 0;\r
\r
\r
status = ChangeDisplaySettingsEx(context->deviceName, deviceMode, NULL, CDS_UPDATEREGISTRY, NULL);\r
\r
+ rturn = false;\r
switch (status)\r
{\r
case DISP_CHANGE_SUCCESSFUL:\r
- printf("ChangeDisplaySettingsEx() was successfull\n");\r
+ _tprintf(_T("ChangeDisplaySettingsEx() was successfull\n"));\r
+ rturn = true;\r
break;\r
\r
case DISP_CHANGE_BADDUALVIEW:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_BADDUALVIEW, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_BADDUALVIEW");\r
break;\r
\r
case DISP_CHANGE_BADFLAGS:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_BADFLAGS, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_BADFLAGS");\r
break;\r
\r
case DISP_CHANGE_BADMODE:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_BADMODE, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_BADMODE");\r
break;\r
\r
case DISP_CHANGE_BADPARAM:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_BADPARAM, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_BADPARAM");\r
break;\r
\r
case DISP_CHANGE_FAILED:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_FAILED, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_FAILED");\r
break;\r
\r
case DISP_CHANGE_NOTUPDATED:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_NOTUPDATED, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_NOTUPDATED");\r
break;\r
\r
case DISP_CHANGE_RESTART:\r
- printf("ChangeDisplaySettingsEx() failed with DISP_CHANGE_RESTART, code %d\n", status);\r
- return -1;\r
+ rMsg = _T("DISP_CHANGE_RESTART");\r
break;\r
}\r
\r
- return 0;\r
+ if(!rturn)\r
+ _tprintf(_T("ChangeDisplaySettingsEx() failed with %s, code %d\n"), rMsg, status);\r
+ \r
+ return rturn;\r
}\r
\r
int wf_mirage_step4(wfPeerContext* context)\r