Make sure the UIKit message box is being handled on the main thread

Potentially fixes https://github.com/libsdl-org/SDL/issues/4865
main
Sam Lantinga 2022-04-07 11:32:22 -07:00
parent 2823534fef
commit 5613a56032
1 changed files with 19 additions and 5 deletions

View File

@ -186,8 +186,8 @@ UIKit_ShowMessageBoxAlertView(const SDL_MessageBoxData *messageboxdata, int *but
#endif /* __IPHONE_OS_VERSION_MIN_REQUIRED < 80000 */ #endif /* __IPHONE_OS_VERSION_MIN_REQUIRED < 80000 */
} }
int static void
UIKit_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid) UIKit_ShowMessageBoxImpl(const SDL_MessageBoxData *messageboxdata, int *buttonid, int *returnValue)
{ {
BOOL success = NO; BOOL success = NO;
@ -199,12 +199,26 @@ UIKit_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
} }
if (!success) { if (!success) {
return SDL_SetError("Could not show message box."); *returnValue = SDL_SetError("Could not show message box.");
} else {
*returnValue = 0;
} }
return 0;
} }
int
UIKit_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
{ @autoreleasepool
{
__block int returnValue = 0;
if ([NSThread isMainThread]) {
UIKit_ShowMessageBoxImpl(messageboxdata, buttonid, &returnValue);
} else {
dispatch_sync(dispatch_get_main_queue(), ^{ UIKit_ShowMessageBoxImpl(messageboxdata, buttonid, &returnValue); });
}
return returnValue;
}}
#endif /* SDL_VIDEO_DRIVER_UIKIT */ #endif /* SDL_VIDEO_DRIVER_UIKIT */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */