diff --git a/ui/drivers/cocoa/ui_cocoa_application.m b/ui/drivers/cocoa/ui_cocoa_application.m index d757b7ddf3..63af3b67ee 100644 --- a/ui/drivers/cocoa/ui_cocoa_application.m +++ b/ui/drivers/cocoa/ui_cocoa_application.m @@ -19,10 +19,21 @@ #include #include +#include +#include "cocoa_common.h" #include "../../ui_companion_driver.h" static void ui_application_cocoa_process_events(void) { + while (1) + { + NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES]; + if (!event) + break; + [event retain]; + [NSApp sendEvent: event]; + [event release]; + }; } const ui_application_t ui_application_cocoa = { diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 46b3da0f4b..6d246fe358 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -207,15 +207,7 @@ static char** waiting_argv; static void poll_iteration(void) { - while (1) - { - NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES]; - if (!event) - break; - [event retain]; - [NSApp sendEvent: event]; - [event release]; - }; + } - (void) rarch_main @@ -224,7 +216,9 @@ static void poll_iteration(void) while (ret != -1) { unsigned sleep_ms = 0; - poll_iteration(); + const ui_application_t *application = ui_companion_driver_get_application_ptr(); + if (application) + application->process_events(); ret = runloop_iterate(&sleep_ms); if (ret == 1 && sleep_ms > 0) retro_sleep(sleep_ms);