XQuartz: RandR: Add RandR modes for the primary display in multi-monitor configs

We now support using RandR to set the resolution of the primary display (and
place a shielding window on other displays) in multi-monitor configurations.

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
Jeremy Huddleston 2011-02-08 11:38:35 -08:00
parent 968652983f
commit 8cf3348e90
2 changed files with 7 additions and 10 deletions

View File

@ -413,16 +413,6 @@ static Bool QuartzRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) {
if (pQuartzScreen->displayCount == 0)
return FALSE;
if (pQuartzScreen->displayCount > 1) {
/* RandR operations are not well-defined for an X11 screen spanning
multiple CG displays. Create two entries for the current virtual
resolution including/excluding the menu bar. */
QuartzRandRRegisterMode(pScreen, &pQuartzScreen->rootlessMode);
QuartzRandRRegisterMode(pScreen, &pQuartzScreen->fullscreenMode);
return TRUE;
}
return QuartzRandREnumerateModes(pScreen, QuartzRandRRegisterModeCallback, NULL);
}

View File

@ -196,6 +196,13 @@ xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height, ScreenPtr pScr
return;
}
/* If the displays are captured, we are in a RandR game mode
* on the primary display, so we only want to include the first
* display. The others are covered by the shield window.
*/
if (CGDisplayIsCaptured(kCGDirectMainDisplay))
displayCount = 1;
displayList = malloc(displayCount * sizeof(CGDirectDisplayID));
if(!displayList)
FatalError("Unable to allocate memory for list of displays.\n");