diff --git a/frontend/frontend.c b/frontend/frontend.c index d7c7357453..7d2aa525bf 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -164,8 +164,26 @@ int rarch_main(int argc, char *argv[], void *data) const ui_application_t *ui_application = ui_companion_driver_get_qt_application_ptr(); if (ui_application) - ui_application->run(data); + { + do + { + unsigned sleep_ms = 0; + int ret = runloop_iterate(&sleep_ms); + + if (ret == 1 && sleep_ms > 0) + retro_sleep(sleep_ms); + + task_queue_check(); + + if (ret == -1 || ui_application->exiting) + { + ui_application->quit(); + break; + } + }while(1); + } } + main_exit(data); #endif return 0; diff --git a/ui/drivers/cocoa/ui_cocoa_application.m b/ui/drivers/cocoa/ui_cocoa_application.m index ce2aa23a7a..c9078a4eb8 100644 --- a/ui/drivers/cocoa/ui_cocoa_application.m +++ b/ui/drivers/cocoa/ui_cocoa_application.m @@ -24,7 +24,6 @@ #include "cocoa_common.h" #include "../../ui_companion_driver.h" - static void* ui_application_cocoa_initialize(void) { return NULL; @@ -55,16 +54,12 @@ static void ui_application_cocoa_process_events(void) } } -static void ui_application_cocoa_run(void *args) -{ - (void)args; -} - ui_application_t ui_application_cocoa = { ui_application_cocoa_initialize, ui_application_cocoa_pending_events, ui_application_cocoa_process_events, - ui_application_cocoa_run, NULL, + NULL, + false, "cocoa" }; diff --git a/ui/drivers/null/ui_null_application.c b/ui/drivers/null/ui_null_application.c index 0c3fea4d91..f10667d390 100644 --- a/ui/drivers/null/ui_null_application.c +++ b/ui/drivers/null/ui_null_application.c @@ -35,16 +35,11 @@ static void ui_application_null_process_events(void) { } -static void ui_application_null_run(void *args) -{ - (void)args; -} - ui_application_t ui_application_null = { ui_application_null_initialize, ui_application_null_pending_events, ui_application_null_process_events, - ui_application_null_run, NULL, + false, "null" }; diff --git a/ui/drivers/qt/ui_qt_application.cpp b/ui/drivers/qt/ui_qt_application.cpp index 9064b5bad3..db9ea4f202 100644 --- a/ui/drivers/qt/ui_qt_application.cpp +++ b/ui/drivers/qt/ui_qt_application.cpp @@ -40,7 +40,6 @@ extern "C" { static AppHandler *appHandler; static ui_application_qt_t ui_application; -static bool app_exiting = false; /* these must last for the lifetime of the QApplication */ static int app_argc = 1; @@ -78,7 +77,7 @@ AppHandler::~AppHandler() void AppHandler::exit() { - app_exiting = true; + ui_application_qt.exiting = true; if (qApp) qApp->closeAllWindows(); @@ -86,7 +85,7 @@ void AppHandler::exit() bool AppHandler::isExiting() const { - return app_exiting; + return ui_application_qt.exiting; } void AppHandler::onLastWindowClosed() @@ -151,30 +150,6 @@ static void ui_application_qt_quit(void) appHandler->exit(); } -static void ui_application_qt_run(void *args) -{ -#ifdef HAVE_MAIN - do - { - unsigned sleep_ms = 0; - int ret = runloop_iterate(&sleep_ms); - - if (ret == 1 && sleep_ms > 0) - retro_sleep(sleep_ms); - - task_queue_check(); - - if (ret == -1 || app_exiting) - { - ui_application_qt_quit(); - break; - } - }while(1); - - main_exit(args); -#endif -} - #ifdef HAVE_MAIN #if defined(__cplusplus) && !defined(CXX_BUILD) extern "C" @@ -189,7 +164,7 @@ ui_application_t ui_application_qt = { ui_application_qt_initialize, ui_application_qt_pending_events, ui_application_qt_process_events, - ui_application_qt_run, ui_application_qt_quit, + false, "qt" }; diff --git a/ui/drivers/win32/ui_win32_application.c b/ui/drivers/win32/ui_win32_application.c index b40f927fcd..525814d73c 100644 --- a/ui/drivers/win32/ui_win32_application.c +++ b/ui/drivers/win32/ui_win32_application.c @@ -48,16 +48,11 @@ static void ui_application_win32_process_events(void) } } -static void ui_application_win32_run(void *args) -{ - (void)args; -} - ui_application_t ui_application_win32 = { ui_application_win32_initialize, ui_application_win32_pending_events, ui_application_win32_process_events, - ui_application_win32_run, NULL, + false, "win32" }; diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index c31df93f1d..f728d7f86e 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -107,8 +107,8 @@ typedef struct ui_application void* (*initialize)(void); bool (*pending_events)(void); void (*process_events)(void); - void (*run)(void *args); void (*quit)(void); + bool exiting; const char *ident; } ui_application_t;