mirror of
https://github.com/X11Libre/xserver.git
synced 2026-09-27 21:22:26 +00:00
XQuartz: RandR: Capture the display when switching modes with RandR
This will prevent native windows from resizing as we change resolutions. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
f3d19c0cf3
commit
13578b852b
5 changed files with 23 additions and 0 deletions
|
|
@ -346,6 +346,14 @@ static int QuartzRandRRegisterModeCallback (ScreenPtr pScreen,
|
|||
static Bool QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, BOOL doRegister) {
|
||||
QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen);
|
||||
CGDirectDisplayID screenId = pQuartzScreen->displayIDs[0];
|
||||
Bool captureDisplay = (pMode->refresh != FAKE_REFRESH_FULLSCREEN && pMode->refresh != FAKE_REFRESH_ROOTLESS);
|
||||
|
||||
if(XQuartzShieldingWindowLevel == 0 && captureDisplay) {
|
||||
CGCaptureAllDisplays();
|
||||
XQuartzShieldingWindowLevel = CGShieldingWindowLevel(); // 2147483630
|
||||
DEBUG_LOG("Display captured. ShieldWindowID: %u, Shield level: %d\n",
|
||||
CGShieldingWindowID(screenId), XQuartzShieldingWindowLevel);
|
||||
}
|
||||
|
||||
if (pQuartzScreen->currentMode.ref && CFEqual(pMode->ref, pQuartzScreen->currentMode.ref)) {
|
||||
DEBUG_LOG("Requested RandR resolution matches current CG mode\n");
|
||||
|
|
@ -369,6 +377,11 @@ static Bool QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, BOOL
|
|||
pQuartzScreen->currentMode = *pMode;
|
||||
CFRetain(pQuartzScreen->currentMode.ref);
|
||||
|
||||
if(XQuartzShieldingWindowLevel != 0 && !captureDisplay) {
|
||||
CGReleaseAllDisplays();
|
||||
XQuartzShieldingWindowLevel = 0;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue