(frontend) Add some workarounds for Emscripten

This commit is contained in:
twinaphex 2013-11-04 12:46:47 +01:00
parent 0612ec702c
commit 41751ff0cf

View File

@ -92,7 +92,20 @@ static void rarch_get_environment_console(void)
} }
#endif #endif
#if defined(ANDROID) #if defined(EMSCRIPTEN)
#define main_entry emscripten_app_entry
#define returntype void
#define signature() void
#define returnfunc() exit(0)
#define return_negative() return
#define return_var(var) return
#define declare_argc() int argc = 0;
#define declare_argv() char *argv[1]
#define args_type() void*
#define args_initial_ptr() NULL
#define while_iter if
#define while_cond false
#elif defined(ANDROID)
#define main_entry android_app_entry #define main_entry android_app_entry
#define returntype void #define returntype void
#define signature() void* data #define signature() void* data
@ -103,6 +116,8 @@ static void rarch_get_environment_console(void)
#define declare_argv() char *argv[1] #define declare_argv() char *argv[1]
#define args_type() struct android_app* #define args_type() struct android_app*
#define args_initial_ptr() data #define args_initial_ptr() data
#define while_iter while
#define while_cond true
#elif defined(IOS) || defined(OSX) || defined(HAVE_BB10) #elif defined(IOS) || defined(OSX) || defined(HAVE_BB10)
#define main_entry rarch_main #define main_entry rarch_main
#define returntype int #define returntype int
@ -114,6 +129,8 @@ static void rarch_get_environment_console(void)
#define declare_argv() #define declare_argv()
#define args_type() void* #define args_type() void*
#define args_initial_ptr() NULL #define args_initial_ptr() NULL
#define while_iter while
#define while_cond true
#else #else
#define main_entry main #define main_entry main
#define returntype int #define returntype int
@ -125,6 +142,8 @@ static void rarch_get_environment_console(void)
#define declare_argv() #define declare_argv()
#define args_type() void* #define args_type() void*
#define args_initial_ptr() NULL #define args_initial_ptr() NULL
#define while_iter while
#define while_cond true
#endif #endif
#if defined(HAVE_BB10) || defined(ANDROID) #if defined(HAVE_BB10) || defined(ANDROID)
@ -206,7 +225,7 @@ returntype main_entry(signature())
menu_rom_history_push_current(); menu_rom_history_push_current();
} }
for (;;) do
{ {
if (g_extern.system.shutdown) if (g_extern.system.shutdown)
break; break;
@ -237,7 +256,7 @@ returntype main_entry(signature())
if (driver.video_poke->set_aspect_ratio) if (driver.video_poke->set_aspect_ratio)
driver.video_poke->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx); driver.video_poke->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate()) while_iter ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate())
{ {
if (frontend_ctx && frontend_ctx->process_events) if (frontend_ctx && frontend_ctx->process_events)
frontend_ctx->process_events(args); frontend_ctx->process_events(args);
@ -268,7 +287,7 @@ returntype main_entry(signature())
if (driver.audio_data) if (driver.audio_data)
audio_stop_func(); audio_stop_func();
while (!g_extern.system.shutdown && menu_iterate()) while_iter (!g_extern.system.shutdown && menu_iterate())
{ {
if (frontend_ctx && frontend_ctx->process_events) if (frontend_ctx && frontend_ctx->process_events)
frontend_ctx->process_events(args); frontend_ctx->process_events(args);
@ -292,7 +311,7 @@ returntype main_entry(signature())
} }
else else
break; break;
} }while(while_cond);
g_extern.system.shutdown = false; g_extern.system.shutdown = false;
menu_free(); menu_free();
@ -300,7 +319,7 @@ returntype main_entry(signature())
if (g_extern.config_save_on_exit && *g_extern.config_path) if (g_extern.config_save_on_exit && *g_extern.config_path)
config_save_file(g_extern.config_path); config_save_file(g_extern.config_path);
#else #else
while ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate()); while_iter ((g_extern.is_paused && !g_extern.is_oneshot) ? rarch_main_idle_iterate() : rarch_main_iterate());
#endif #endif
rarch_main_deinit(); rarch_main_deinit();