From 418bb57a3923311338baa8a85c0794a72e15ceeb Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Thu, 13 Jan 2011 17:12:17 -0800 Subject: [PATCH] XQuartz: Call RRScreenSizeNotify after handling externally-generated XP_EVENT_DISPLAY_CHANGED We get an XP_EVENT_DISPLAY_CHANGED event when our display configuration is changed. If this change was caused by hotplugging a monitor or Mac Display Preferences changes by the user, we need to call RRScreenSizeNotify in order to ensure new connections get the correct screen size. http://xquartz.macosforge.org/trac/ticket/460 Signed-off-by: Jeremy Huddleston --- hw/xquartz/darwinEvents.c | 3 +-- hw/xquartz/quartz.c | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c index 9e03525b0..16fec4a01 100644 --- a/hw/xquartz/darwinEvents.c +++ b/hw/xquartz/darwinEvents.c @@ -280,10 +280,9 @@ static void DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr de case kXquartzDisplayChanged: DEBUG_LOG("kXquartzDisplayChanged\n"); QuartzUpdateScreens(); -#ifdef RANDR + /* Update our RandR info */ QuartzRandRUpdateFakeModes(TRUE); -#endif break; default: diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index 6c185a8eb..156de1395 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -244,6 +244,9 @@ void QuartzUpdateScreens(void) { DeliverEvents(pRoot, &e, 1, NullWindow); quartzProcs->UpdateScreen(pScreen); + + /* Tell RandR about the new size, so new connections get the correct info */ + RRScreenSizeNotify(pScreen); } static void pokeActivityCallback(CFRunLoopTimerRef timer, void *info) {