diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c index 2500514255b372e14a2e2a8b4f283ce6b0d728f7..c336820df7f73a46afebe05cf952635dcb0b81b8 100644 --- a/hw/xwin/InitOutput.c +++ b/hw/xwin/InitOutput.c @@ -981,8 +981,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[]) for (iMonitor = 1; ; iMonitor++) { struct GetMonitorInfoData data; - QueryMonitor(iMonitor, &data); - if (data.bMonitorSpecifiedExists) + if (QueryMonitor(iMonitor, &data)) { MONITORINFO mi; mi.cbSize = sizeof(MONITORINFO); diff --git a/hw/xwin/winmonitors.c b/hw/xwin/winmonitors.c index 955fb9214abfd0dca0e44a4a7feee13eb196619a..5ff56530898bac0c465ee3a8ad310fffc725e322 100644 --- a/hw/xwin/winmonitors.c +++ b/hw/xwin/winmonitors.c @@ -39,7 +39,7 @@ from The Open Group. */ static - wBOOL CALLBACK +WINBOOL CALLBACK getMonitorInfo(HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM _data) { struct GetMonitorInfoData *data = (struct GetMonitorInfoData *) _data; @@ -70,5 +70,5 @@ QueryMonitor(int i, struct GetMonitorInfoData *data) /* query information */ EnumDisplayMonitors(NULL, NULL, getMonitorInfo, (LPARAM) data); - return TRUE; + return data->bMonitorSpecifiedExists; } diff --git a/hw/xwin/winprocarg.c b/hw/xwin/winprocarg.c index 29e91abc8958727e1ce3f9817fb8af4658951aaa..cb03b00e0c7c9605e7d3bf3b2e26110ea1b039ee 100644 --- a/hw/xwin/winprocarg.c +++ b/hw/xwin/winprocarg.c @@ -309,11 +309,7 @@ ddxProcessArgument(int argc, char *argv[], int i) if (i + 2 < argc && 1 == sscanf(argv[i + 2], "@%d", (int *) &iMonitor)) { struct GetMonitorInfoData data; - if (!QueryMonitor(iMonitor, &data)) { - ErrorF - ("ddxProcessArgument - screen - Querying monitors failed\n"); - } - else if (data.bMonitorSpecifiedExists == TRUE) { + if (QueryMonitor(iMonitor, &data)) { winErrorFVerb(2, "ddxProcessArgument - screen - Found Valid ``@Monitor'' = %d arg\n", iMonitor); @@ -334,8 +330,7 @@ ddxProcessArgument(int argc, char *argv[], int i) ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n", iMonitor); - UseMsg(); - exit(0); + exit(1); return 0; } } @@ -366,11 +361,7 @@ ddxProcessArgument(int argc, char *argv[], int i) (int *) &iMonitor)) { struct GetMonitorInfoData data; - if (!QueryMonitor(iMonitor, &data)) { - ErrorF - ("ddxProcessArgument - screen - Querying monitors failed\n"); - } - else if (data.bMonitorSpecifiedExists == TRUE) { + if (QueryMonitor(iMonitor, &data)) { g_ScreenInfo[nScreenNum].iMonitor = iMonitor; g_ScreenInfo[nScreenNum].hMonitor = data.monitorHandle; g_ScreenInfo[nScreenNum].dwInitialX += @@ -383,11 +374,9 @@ ddxProcessArgument(int argc, char *argv[], int i) ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n", iMonitor); - UseMsg(); - exit(0); + exit(1); return 0; } - } } @@ -395,11 +384,7 @@ ddxProcessArgument(int argc, char *argv[], int i) else if (1 == sscanf(argv[i + 2], "%*dx%*d@%d", (int *) &iMonitor)) { struct GetMonitorInfoData data; - if (!QueryMonitor(iMonitor, &data)) { - ErrorF - ("ddxProcessArgument - screen - Querying monitors failed\n"); - } - else if (data.bMonitorSpecifiedExists == TRUE) { + if (QueryMonitor(iMonitor, &data)) { winErrorFVerb(2, "ddxProcessArgument - screen - Found Valid ``@Monitor'' = %d arg\n", iMonitor); @@ -414,11 +399,9 @@ ddxProcessArgument(int argc, char *argv[], int i) ErrorF ("ddxProcessArgument - screen - Invalid monitor number %d\n", iMonitor); - UseMsg(); - exit(0); + exit(1); return 0; } - } } else if (i + 3 < argc && 1 == sscanf(argv[i + 2], "%d", (int *) &iWidth) diff --git a/hw/xwin/winrandr.c b/hw/xwin/winrandr.c index 16caea7420e91213c311878bd8891c5a95abedca..038d63bded5d39a64c89a4a2e6525fb75ec79dcb 100644 --- a/hw/xwin/winrandr.c +++ b/hw/xwin/winrandr.c @@ -42,17 +42,17 @@ static Bool winRandRGetInfo(ScreenPtr pScreen, Rotation * pRotations) { - rrScrPrivPtr pRRScrPriv; - RROutputPtr output; - - pRRScrPriv = rrGetScrPriv(pScreen); - output = pRRScrPriv->outputs[0]; - winDebug("winRandRGetInfo ()\n"); /* Don't support rotations */ *pRotations = RR_Rotate_0; + return TRUE; +} + +static void +winRandRUpdateMode(ScreenPtr pScreen, RROutputPtr output) +{ /* Delete previous mode */ if (output->modes[0]) { @@ -83,8 +83,6 @@ winRandRGetInfo(ScreenPtr pScreen, Rotation * pRotations) mode = RRModeGet(&modeInfo, name); output->crtc->mode = mode; } - - return TRUE; } /* @@ -95,6 +93,7 @@ winDoRandRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height, CARD32 mmWidth, CARD32 mmHeight) { + rrScrPrivPtr pRRScrPriv; winScreenPriv(pScreen); winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo; WindowPtr pRoot = pScreen->root; @@ -136,6 +135,10 @@ winDoRandRScreenSetSize(ScreenPtr pScreen, // and arrange for it to be repainted pScreen->PaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); + // Set mode to current display size + pRRScrPriv = rrGetScrPriv(pScreen); + winRandRUpdateMode(pScreen, pRRScrPriv->primaryOutput); + /* Indicate that a screen size change took place */ RRScreenSizeNotify(pScreen); } @@ -270,6 +273,24 @@ winRandRInit(ScreenPtr pScreen) /* Ensure we have space for exactly one mode */ output->modes = malloc(sizeof(RRModePtr)); output->modes[0] = NULL; + + /* Set mode to current display size */ + winRandRUpdateMode(pScreen, output); + + /* Make up some physical dimensions */ + output->mmWidth = (pScreen->width * 25.4)/monitorResolution; + output->mmHeight = (pScreen->height * 25.4)/monitorResolution; + + /* Allocate and make up a (fixed, linear) gamma ramp */ + { + int i; + RRCrtcGammaSetSize(crtc, 256); + for (i = 0; i < crtc->gammaSize; i++) { + crtc->gammaRed[i] = i << 8; + crtc->gammaBlue[i] = i << 8; + crtc->gammaGreen[i] = i << 8; + } + } } /* diff --git a/hw/xwin/winwndproc.c b/hw/xwin/winwndproc.c index 16b5f05655675e230ed90bc6dd2efebffa9b9962..e375be9c161dd20d97643bddb4d55cb8636e4bee 100644 --- a/hw/xwin/winwndproc.c +++ b/hw/xwin/winwndproc.c @@ -238,7 +238,6 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) struct GetMonitorInfoData data; if (QueryMonitor(s_pScreenInfo->iMonitor, &data)) { - if (data.bMonitorSpecifiedExists == TRUE) { dwWidth = data.monitorWidth; dwHeight = data.monitorHeight; /* @@ -250,7 +249,6 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) ErrorF("Monitor number %d no longer exists!\n", s_pScreenInfo->iMonitor); } - } } /*