XQuartz: RandR: Fix mode changing for multi-monitor configurations.
This just fixes the regression whereby we couldn't switch between the legacy fullscreen mode and rootless on multi-monitor configurations. This was happening because ref wasn't being set in these cases (since we don't ever actually change CG modes), so we failed a CFEqual. Setting the references fixes this regression and places us one step closer to more mode RandR mode switching in multi-monitor configurations. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
14f00449eb
commit
714b68d9e5
|
@ -438,18 +438,16 @@ static Bool QuartzRandRSetConfig (ScreenPtr pScreen,
|
||||||
static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) {
|
static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) {
|
||||||
QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen);
|
QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen);
|
||||||
|
|
||||||
if (pQuartzScreen->displayCount == 1) {
|
if(pQuartzScreen->fullscreenMode.ref)
|
||||||
if(pQuartzScreen->fullscreenMode.ref)
|
CFRelease(pQuartzScreen->fullscreenMode.ref);
|
||||||
CFRelease(pQuartzScreen->fullscreenMode.ref);
|
if(pQuartzScreen->currentMode.ref)
|
||||||
if(pQuartzScreen->currentMode.ref)
|
CFRelease(pQuartzScreen->currentMode.ref);
|
||||||
CFRelease(pQuartzScreen->currentMode.ref);
|
|
||||||
|
|
||||||
if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0],
|
if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0],
|
||||||
&pQuartzScreen->fullscreenMode))
|
&pQuartzScreen->fullscreenMode))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
CFRetain(pQuartzScreen->fullscreenMode.ref); /* This extra retain is for currentMode's copy */
|
if (pQuartzScreen->displayCount > 1) {
|
||||||
} else {
|
|
||||||
pQuartzScreen->fullscreenMode.width = pScreen->width;
|
pQuartzScreen->fullscreenMode.width = pScreen->width;
|
||||||
pQuartzScreen->fullscreenMode.height = pScreen->height;
|
pQuartzScreen->fullscreenMode.height = pScreen->height;
|
||||||
if(XQuartzIsRootless)
|
if(XQuartzIsRootless)
|
||||||
|
@ -467,6 +465,11 @@ static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) {
|
||||||
} else {
|
} else {
|
||||||
pQuartzScreen->currentMode = pQuartzScreen->fullscreenMode;
|
pQuartzScreen->currentMode = pQuartzScreen->fullscreenMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This extra retain is for currentMode's copy.
|
||||||
|
* fullscreen and rootless share a retain.
|
||||||
|
*/
|
||||||
|
CFRetain(pQuartzScreen->currentMode.ref);
|
||||||
|
|
||||||
DEBUG_LOG("rootlessMode: %d x %d\n", (int)pQuartzScreen->rootlessMode.width, (int)pQuartzScreen->rootlessMode.height);
|
DEBUG_LOG("rootlessMode: %d x %d\n", (int)pQuartzScreen->rootlessMode.width, (int)pQuartzScreen->rootlessMode.height);
|
||||||
DEBUG_LOG("fullscreenMode: %d x %d\n", (int)pQuartzScreen->fullscreenMode.width, (int)pQuartzScreen->fullscreenMode.height);
|
DEBUG_LOG("fullscreenMode: %d x %d\n", (int)pQuartzScreen->fullscreenMode.width, (int)pQuartzScreen->fullscreenMode.height);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user