mirror of
https://github.com/LumaTeam/Luma3DS.git
synced 2026-05-31 01:16:56 +00:00
rosalina: fix RosalinaMenu_ReturnToHomeMenu
Using menuLeave was a bug I didn't catch during code review, and caused graphical glitches. Introduce menuRequestClose instead
This commit is contained in:
parent
989fb59a35
commit
c3767a3c36
@ -94,6 +94,7 @@ u32 menuCountItems(const Menu *menu);
|
||||
MyThread *menuCreateThread(void);
|
||||
void menuEnter(void);
|
||||
void menuLeave(void);
|
||||
void menuRequestClose(void);
|
||||
void menuThreadMain(void);
|
||||
void menuShow(Menu *root);
|
||||
void DispMessage(const char *title, const char *message);
|
||||
|
||||
@ -196,6 +196,7 @@ u32 waitCombo(void)
|
||||
|
||||
static MyThread menuThread;
|
||||
static u8 CTR_ALIGN(8) menuThreadStack[0x3000];
|
||||
static bool menuCloseRequested = false;
|
||||
|
||||
static float batteryPercentage;
|
||||
static float batteryVoltage;
|
||||
@ -400,6 +401,7 @@ void menuEnter(void)
|
||||
Draw_Lock();
|
||||
if(!menuShouldExit && menuRefCount == 0)
|
||||
{
|
||||
menuCloseRequested = false;
|
||||
menuRefCount++;
|
||||
svcKernelSetState(0x10000, 2 | 1);
|
||||
svcSleepThread(5 * 1000 * 100LL);
|
||||
@ -430,6 +432,11 @@ void menuLeave(void)
|
||||
Draw_Unlock();
|
||||
}
|
||||
|
||||
void menuRequestClose(void)
|
||||
{
|
||||
menuCloseRequested = true;
|
||||
}
|
||||
|
||||
static void menuDraw(Menu *menu, u32 selected)
|
||||
{
|
||||
char versionString[16];
|
||||
@ -517,6 +524,8 @@ void menuShow(Menu *root)
|
||||
if (menuItemIsHidden(¤tMenu->items[selectedItem]))
|
||||
selectedItem = menuAdvanceCursor(selectedItem, numItems, 1);
|
||||
|
||||
menuCloseRequested = false;
|
||||
|
||||
Draw_Lock();
|
||||
Draw_ClearFramebuffer();
|
||||
Draw_FlushFramebuffer();
|
||||
@ -563,6 +572,9 @@ void menuShow(Menu *root)
|
||||
break;
|
||||
}
|
||||
|
||||
if (menuCloseRequested)
|
||||
break;
|
||||
|
||||
Draw_Lock();
|
||||
Draw_ClearFramebuffer();
|
||||
Draw_FlushFramebuffer();
|
||||
@ -597,5 +609,5 @@ void menuShow(Menu *root)
|
||||
menuDraw(currentMenu, selectedItem);
|
||||
Draw_Unlock();
|
||||
}
|
||||
while(!menuShouldExit);
|
||||
while(!menuShouldExit && !menuCloseRequested);
|
||||
}
|
||||
|
||||
@ -321,8 +321,8 @@ void RosalinaMenu_ReturnToHomeMenu(void)
|
||||
|
||||
if(pressed & KEY_A)
|
||||
{
|
||||
menuLeave();
|
||||
srvPublishToSubscriber(0x204, 0);
|
||||
menuRequestClose();
|
||||
return;
|
||||
}
|
||||
else if(pressed & KEY_B)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user