(RMenu) Make current_menu variable static to prevent crashes

on Xbox 1
This commit is contained in:
twinaphex 2013-01-19 21:34:46 +01:00
parent f9fcb55835
commit 3405c7f08c
2 changed files with 10 additions and 8 deletions

View File

@ -42,7 +42,7 @@
#include "../../general.h"
rmenu_state_t rmenu_state;
static rmenu_state_t rmenu_state;
static bool set_libretro_core_as_launch;
@ -2373,7 +2373,6 @@ INPUT POLL CALLBACK
void rmenu_input_poll(void *data, void *state)
{
menu *current_menu = (menu*)data;
rmenu_state_t *rstate = (rmenu_state_t*)state;
//first button input frame
uint64_t input_state_first_frame = 0;
@ -2387,7 +2386,7 @@ void rmenu_input_poll(void *data, void *state)
RETRO_DEVICE_JOYPAD, 0, i) ? (1ULL << i) : 0;
//set first button input frame as trigger
rstate->input = input_state & ~(rstate->old_state);
rmenu_state.input = input_state & ~(rmenu_state.old_state);
//hold onto first button input frame
input_state_first_frame = input_state;
@ -2416,11 +2415,11 @@ void rmenu_input_poll(void *data, void *state)
if(!(g_extern.frame_count < g_extern.delay_timer[1]))
{
first_held = false;
rstate->input = input_state; //second input frame set as current frame
rmenu_state.input = input_state; //second input frame set as current frame
}
}
rstate->old_state = input_state_first_frame;
rmenu_state.old_state = input_state_first_frame;
}
/*============================================================
@ -2523,7 +2522,7 @@ bool rmenu_iterate(void)
const char *msg;
DEVICE_CAST device_ptr = (DEVICE_CAST)driver.video_data;
menu current_menu;
static menu current_menu;
if (g_extern.lifecycle_mode_state & (1ULL << MODE_MENU_PREINIT))
{
@ -2550,7 +2549,7 @@ bool rmenu_iterate(void)
rarch_render_cached_frame();
if(current_menu.input_poll)
current_menu.input_poll(&current_menu, &rmenu_state);
rmenu_input_poll(&current_menu, &rmenu_state);
#ifdef HAVE_OSKUTIL
if(rmenu_state.osk_init != NULL)

View File

@ -115,7 +115,7 @@ static void xdk_input_poll(void *data)
if(bInserted[i])
{
XINPUT_POLLING_PARAMETERS m_pollingParameters;
m_pollingParameters.fAutoPoll = TRUE;
m_pollingParameters.fAutoPoll = FALSE;
m_pollingParameters.fInterruptOut = TRUE;
m_pollingParameters.bInputInterval = 8;
m_pollingParameters.bOutputInterval = 8;
@ -129,6 +129,9 @@ static void xdk_input_poll(void *data)
// XInputOpen, the device handle will be NULL
XINPUT_STATE state_tmp;
if (XInputPoll(gamepads[i]) != ERROR_SUCCESS)
continue;
if(XInputGetState(gamepads[i], &state_tmp) != ERROR_SUCCESS)
continue;