Use USB events for storing plugin_menu state
use usb connected callback to cancel menu reentry after USB plug/unplug Change-Id: I8267deed6e8ada94ca527392f56f50ef22def1d7
This commit is contained in:
parent
7a6737f471
commit
d72a0ed65d
|
@ -29,7 +29,6 @@
|
|||
#include "rbpaths.h"
|
||||
#include "root_menu.h"
|
||||
#include "tree.h"
|
||||
static int reenter = 0;
|
||||
|
||||
enum {
|
||||
GAMES,
|
||||
|
@ -46,6 +45,12 @@ static const struct {
|
|||
{ PLUGIN_DEMOS_DIR, LANG_PLUGIN_DEMOS },
|
||||
};
|
||||
|
||||
/* if handler is active we are waiting to reenter menu */
|
||||
static void pm_handler(unsigned short id, void *data)
|
||||
{
|
||||
remove_event(id, data);
|
||||
}
|
||||
|
||||
static int plugins_menu(void* param)
|
||||
{
|
||||
intptr_t item = (intptr_t)param;
|
||||
|
@ -60,7 +65,8 @@ static int plugins_menu(void* param)
|
|||
if (ret == GO_TO_PREVIOUS)
|
||||
return 0;
|
||||
if (ret == GO_TO_PLUGIN)
|
||||
reenter = 1;
|
||||
add_event(SYS_EVENT_USB_INSERTED, pm_handler);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -74,8 +80,11 @@ static int menu_callback(int action,
|
|||
if (action == ACTION_ENTER_MENUITEM)
|
||||
{
|
||||
this_list->selected_item = selected;
|
||||
if (reenter-- > 0)
|
||||
action = ACTION_STD_OK;
|
||||
if (!add_event(SYS_EVENT_USB_INSERTED, pm_handler))
|
||||
{
|
||||
action = ACTION_STD_OK; /* event exists -- reenter menu */
|
||||
}
|
||||
remove_event(SYS_EVENT_USB_INSERTED, pm_handler);
|
||||
}
|
||||
else if (action == ACTION_STD_OK)
|
||||
{
|
||||
|
|
|
@ -1196,6 +1196,7 @@ static int ft_play_filename(char *dir, char *file, int attr)
|
|||
/* These two functions are called by the USB and shutdown handlers */
|
||||
void tree_flush(void)
|
||||
{
|
||||
tc.browse = NULL; /* clear browse to prevent reentry to a possibly missing file */
|
||||
#ifdef HAVE_TAGCACHE
|
||||
tagcache_shutdown();
|
||||
#endif
|
||||
|
|
|
@ -478,7 +478,7 @@ static void NORETURN_ATTR usb_thread(void)
|
|||
usb_stack_enable(true);
|
||||
#ifndef BOOTLOADER
|
||||
#ifndef HAVE_USB_POWER
|
||||
int usb_mode = 0;
|
||||
int usb_mode = USBMODE_DEFAULT;
|
||||
#endif
|
||||
send_event(SYS_EVENT_USB_INSERTED, &usb_mode);
|
||||
#endif
|
||||
|
|
|
@ -145,7 +145,7 @@ void sim_trigger_screendump(void)
|
|||
static bool is_usb_inserted;
|
||||
void sim_trigger_usb(bool inserted)
|
||||
{
|
||||
int usbmode = 0;
|
||||
int usbmode = USBMODE_DEFAULT;
|
||||
if (inserted)
|
||||
{
|
||||
send_event(SYS_EVENT_USB_INSERTED, &usbmode);
|
||||
|
|
Loading…
Reference in New Issue