Move is_menu out of runloop struct and create get/set functions in menu_driver.c

and make the underlying variable static to make it thread-safe
This commit is contained in:
twinaphex 2015-05-19 20:11:57 +02:00
parent 3a7263020a
commit 375c49b6c8
15 changed files with 43 additions and 20 deletions

View File

@ -1030,7 +1030,7 @@ bool event_command(enum event_command cmd)
global->pending.windowed_scale = 0; global->pending.windowed_scale = 0;
break; break;
case EVENT_CMD_MENU_TOGGLE: case EVENT_CMD_MENU_TOGGLE:
if (runloop->is_menu) if (menu_driver_alive())
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED);
else else
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING);
@ -1094,7 +1094,7 @@ bool event_command(enum event_command cmd)
#ifdef HAVE_MENU #ifdef HAVE_MENU
menu_display_fb_set_dirty(); menu_display_fb_set_dirty();
if (runloop->is_menu) if (menu_driver_alive())
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE); event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
#endif #endif
break; break;
@ -1387,7 +1387,7 @@ bool event_command(enum event_command cmd)
event_command(EVENT_CMD_PAUSE_CHECKS); event_command(EVENT_CMD_PAUSE_CHECKS);
break; break;
case EVENT_CMD_MENU_PAUSE_LIBRETRO: case EVENT_CMD_MENU_PAUSE_LIBRETRO:
if (runloop->is_menu) if (menu_driver_alive())
{ {
if (settings->menu.pause_libretro) if (settings->menu.pause_libretro)
event_command(EVENT_CMD_AUDIO_STOP); event_command(EVENT_CMD_AUDIO_STOP);

View File

@ -1723,7 +1723,7 @@ static bool d3d_frame(void *data, const void *frame,
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (runloop->is_menu) if (menu_driver_alive())
menu_driver_frame(); menu_driver_frame();
#ifdef _XBOX #ifdef _XBOX

View File

@ -1613,7 +1613,7 @@ static bool gl_frame(void *data, const void *frame,
gl_set_prev_texture(gl, &gl->tex_info); gl_set_prev_texture(gl, &gl->tex_info);
#if defined(HAVE_MENU) #if defined(HAVE_MENU)
if (runloop->is_menu) if (menu_driver_alive())
menu_driver_frame(); menu_driver_frame();
if (gl->menu_texture_enable) if (gl->menu_texture_enable)

View File

@ -504,7 +504,7 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width,
SDL_RenderCopyEx(vid->renderer, vid->frame.tex, NULL, NULL, vid->rotation, NULL, SDL_FLIP_NONE); SDL_RenderCopyEx(vid->renderer, vid->frame.tex, NULL, NULL, vid->rotation, NULL, SDL_FLIP_NONE);
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (runloop->is_menu) if (menu_driver_alive())
menu_driver_frame(); menu_driver_frame();
#endif #endif

View File

@ -190,7 +190,7 @@ static void ps3_joypad_poll(void)
*state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_TRIANGLE) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_X) : 0; *state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_TRIANGLE) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_X) : 0;
*state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_SQUARE) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_Y) : 0; *state_cur |= (state_tmp.button[CELL_PAD_BTN_OFFSET_DIGITAL2] & CELL_PAD_CTRL_SQUARE) ? (1ULL << RETRO_DEVICE_ID_JOYPAD_Y) : 0;
if (runloop->is_menu) if (menu_driver_alive())
{ {
int value = 0; int value = 0;
if (cellSysutilGetSystemParamInt(CELL_SYSUTIL_SYSTEMPARAM_ID_ENTER_BUTTON_ASSIGN, &value) == 0) if (cellSysutilGetSystemParamInt(CELL_SYSUTIL_SYSTEMPARAM_ID_ENTER_BUTTON_ASSIGN, &value) == 0)

View File

@ -337,7 +337,7 @@ static void glui_frame(void)
glui = (glui_handle_t*)menu->userdata; glui = (glui_handle_t*)menu->userdata;
if (menu_needs_refresh() if (menu_needs_refresh()
&& runloop->is_menu && menu_driver_alive()
&& !menu->msg_force && !menu->msg_force
&& !glui->box_message[0]) && !glui->box_message[0])
return; return;

View File

@ -343,7 +343,7 @@ static void rgui_render(void)
if (!menu) if (!menu)
return; return;
if (menu_needs_refresh() && runloop->is_menu && !menu->msg_force) if (menu_needs_refresh() && menu_driver_alive() && !menu->msg_force)
return; return;
if (runloop->is_idle) if (runloop->is_idle)

View File

@ -143,7 +143,7 @@ static void rmenu_render(void)
return; return;
} }
if (menu_needs_refresh() && runloop->is_menu if (menu_needs_refresh() && menu_driver_alive()
&& !menu->msg_force) && !menu->msg_force)
return; return;

View File

@ -539,7 +539,7 @@ static void rmenu_xui_render(void)
if (!menu) if (!menu)
return; return;
if (menu_needs_refresh() && if (menu_needs_refresh() &&
runloop->is_menu && !menu->msg_force) menu_driver_alive() && !menu->msg_force)
return; return;
menu_display_fb_unset_dirty(); menu_display_fb_unset_dirty();

View File

@ -170,6 +170,7 @@ void *menu_init(const void *data)
rarch_assert(menu->msg_queue = msg_queue_new(8)); rarch_assert(menu->msg_queue = msg_queue_new(8));
menu_display_fb_set_dirty(); menu_display_fb_set_dirty();
menu_driver_set_alive();
return menu; return menu;
error: error:
@ -255,6 +256,8 @@ void menu_free(menu_handle_t *menu)
if (global->core_info_current) if (global->core_info_current)
free(global->core_info_current); free(global->core_info_current);
menu_driver_unset_alive();
free(menu); free(menu);
} }
@ -299,7 +302,7 @@ int menu_iterate(retro_input_t input,
ret = menu_entry_iterate(action); ret = menu_entry_iterate(action);
if (runloop->is_menu && !runloop->is_idle) if (menu_driver_alive() && !runloop->is_idle)
menu_display_fb(); menu_display_fb();
menu_driver_set_texture(); menu_driver_set_texture();

View File

@ -22,6 +22,8 @@
#include "../driver.h" #include "../driver.h"
#include "../general.h" #include "../general.h"
static bool menu_alive = false;
static const menu_ctx_driver_t *menu_ctx_drivers[] = { static const menu_ctx_driver_t *menu_ctx_drivers[] = {
#if defined(HAVE_RMENU) #if defined(HAVE_RMENU)
&menu_ctx_rmenu, &menu_ctx_rmenu,
@ -360,3 +362,18 @@ void menu_driver_navigation_ascend_alphabet(size_t *ptr_out)
if (driver->navigation_ascend_alphabet) if (driver->navigation_ascend_alphabet)
driver->navigation_ascend_alphabet(ptr_out); driver->navigation_ascend_alphabet(ptr_out);
} }
bool menu_driver_alive(void)
{
return menu_alive;
}
void menu_driver_set_alive(void)
{
menu_alive = true;
}
void menu_driver_unset_alive(void)
{
menu_alive = false;
}

View File

@ -344,6 +344,12 @@ void menu_driver_list_set_selection(file_list_t *list);
void menu_driver_context_destroy(void); void menu_driver_context_destroy(void);
bool menu_driver_alive(void);
void menu_driver_set_alive(void);
void menu_driver_unset_alive(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -1274,7 +1274,7 @@ void rarch_main_set_state(unsigned cmd)
} }
menu_set_refresh(); menu_set_refresh();
runloop->is_menu = true; menu_driver_set_alive();
} }
#endif #endif
break; break;
@ -1292,8 +1292,7 @@ void rarch_main_set_state(unsigned cmd)
menu_setting_apply_deferred(); menu_setting_apply_deferred();
menu_driver_toggle(false); menu_driver_toggle(false);
menu_driver_unset_alive();
runloop->is_menu = false;
driver_set_nonblock_state(driver->nonblock_state); driver_set_nonblock_state(driver->nonblock_state);

View File

@ -418,10 +418,9 @@ static void check_shader_dir(bool pressed_next, bool pressed_prev)
#ifdef HAVE_MENU #ifdef HAVE_MENU
static void do_state_check_menu_toggle(void) static void do_state_check_menu_toggle(void)
{ {
runloop_t *runloop = rarch_main_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
if (runloop->is_menu) if (menu_driver_alive())
{ {
if (global->main_is_init && !global->libretro_dummy) if (global->main_is_init && !global->libretro_dummy)
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED);
@ -450,7 +449,7 @@ static int do_pre_state_checks(event_cmd_state_t *cmd)
if (cmd->overlay_next_pressed) if (cmd->overlay_next_pressed)
event_command(EVENT_CMD_OVERLAY_NEXT); event_command(EVENT_CMD_OVERLAY_NEXT);
if (!runloop->is_paused || runloop->is_menu) if (!runloop->is_paused || menu_driver_alive())
{ {
if (cmd->fullscreen_toggle) if (cmd->fullscreen_toggle)
event_command(EVENT_CMD_FULLSCREEN_TOGGLE); event_command(EVENT_CMD_FULLSCREEN_TOGGLE);
@ -1109,7 +1108,7 @@ int rarch_main_iterate(void)
#endif #endif
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (runloop->is_menu) if (menu_driver_alive())
{ {
menu_handle_t *menu = menu_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr();
if (menu) if (menu)

View File

@ -47,7 +47,6 @@ typedef struct runloop
bool is_paused; bool is_paused;
bool is_idle; bool is_idle;
bool ui_companion_is_on_foreground; bool ui_companion_is_on_foreground;
bool is_menu;
bool is_slowmotion; bool is_slowmotion;
struct struct