From 520e7a1310ddc25b30bcaa0ea3eeaa6c4d137c8c Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Wed, 27 Jan 2021 15:03:46 -0800 Subject: [PATCH] xquartz: Ensure that NSRunAlertPanel() is run on the main thread Fixes: https://github.com/XQuartz/XQuartz/issues/30 Signed-off-by: Jeremy Huddleston Sequoia --- hw/xquartz/X11Application.m | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index 10afdf91a..a009d6415 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -1082,12 +1082,15 @@ X11ApplicationCanEnterRandR(void) if (!XQuartzIsRootless) QuartzShowFullscreen(FALSE); - switch (NSRunAlertPanel(title, @"%@", - NSLocalizedString(@"Allow", - @""), - NSLocalizedString(@"Cancel", - @""), - NSLocalizedString(@"Always Allow", @""), msg)) { + NSInteger __block alert_result; + dispatch_sync(dispatch_get_main_queue(), ^{ + alert_result = NSRunAlertPanel(title, @"%@", + NSLocalizedString(@"Allow", @""), + NSLocalizedString(@"Cancel", @""), + NSLocalizedString(@"Always Allow", @""), msg); + }); + + switch (alert_result) { case NSAlertOtherReturn: [X11App prefs_set_boolean:@PREFS_NO_RANDR_ALERT value:YES]; [X11App prefs_synchronize]; -- GitLab