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);
|
MyThread *menuCreateThread(void);
|
||||||
void menuEnter(void);
|
void menuEnter(void);
|
||||||
void menuLeave(void);
|
void menuLeave(void);
|
||||||
|
void menuRequestClose(void);
|
||||||
void menuThreadMain(void);
|
void menuThreadMain(void);
|
||||||
void menuShow(Menu *root);
|
void menuShow(Menu *root);
|
||||||
void DispMessage(const char *title, const char *message);
|
void DispMessage(const char *title, const char *message);
|
||||||
|
|||||||
@ -196,6 +196,7 @@ u32 waitCombo(void)
|
|||||||
|
|
||||||
static MyThread menuThread;
|
static MyThread menuThread;
|
||||||
static u8 CTR_ALIGN(8) menuThreadStack[0x3000];
|
static u8 CTR_ALIGN(8) menuThreadStack[0x3000];
|
||||||
|
static bool menuCloseRequested = false;
|
||||||
|
|
||||||
static float batteryPercentage;
|
static float batteryPercentage;
|
||||||
static float batteryVoltage;
|
static float batteryVoltage;
|
||||||
@ -400,6 +401,7 @@ void menuEnter(void)
|
|||||||
Draw_Lock();
|
Draw_Lock();
|
||||||
if(!menuShouldExit && menuRefCount == 0)
|
if(!menuShouldExit && menuRefCount == 0)
|
||||||
{
|
{
|
||||||
|
menuCloseRequested = false;
|
||||||
menuRefCount++;
|
menuRefCount++;
|
||||||
svcKernelSetState(0x10000, 2 | 1);
|
svcKernelSetState(0x10000, 2 | 1);
|
||||||
svcSleepThread(5 * 1000 * 100LL);
|
svcSleepThread(5 * 1000 * 100LL);
|
||||||
@ -430,6 +432,11 @@ void menuLeave(void)
|
|||||||
Draw_Unlock();
|
Draw_Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void menuRequestClose(void)
|
||||||
|
{
|
||||||
|
menuCloseRequested = true;
|
||||||
|
}
|
||||||
|
|
||||||
static void menuDraw(Menu *menu, u32 selected)
|
static void menuDraw(Menu *menu, u32 selected)
|
||||||
{
|
{
|
||||||
char versionString[16];
|
char versionString[16];
|
||||||
@ -517,6 +524,8 @@ void menuShow(Menu *root)
|
|||||||
if (menuItemIsHidden(¤tMenu->items[selectedItem]))
|
if (menuItemIsHidden(¤tMenu->items[selectedItem]))
|
||||||
selectedItem = menuAdvanceCursor(selectedItem, numItems, 1);
|
selectedItem = menuAdvanceCursor(selectedItem, numItems, 1);
|
||||||
|
|
||||||
|
menuCloseRequested = false;
|
||||||
|
|
||||||
Draw_Lock();
|
Draw_Lock();
|
||||||
Draw_ClearFramebuffer();
|
Draw_ClearFramebuffer();
|
||||||
Draw_FlushFramebuffer();
|
Draw_FlushFramebuffer();
|
||||||
@ -563,6 +572,9 @@ void menuShow(Menu *root)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (menuCloseRequested)
|
||||||
|
break;
|
||||||
|
|
||||||
Draw_Lock();
|
Draw_Lock();
|
||||||
Draw_ClearFramebuffer();
|
Draw_ClearFramebuffer();
|
||||||
Draw_FlushFramebuffer();
|
Draw_FlushFramebuffer();
|
||||||
@ -597,5 +609,5 @@ void menuShow(Menu *root)
|
|||||||
menuDraw(currentMenu, selectedItem);
|
menuDraw(currentMenu, selectedItem);
|
||||||
Draw_Unlock();
|
Draw_Unlock();
|
||||||
}
|
}
|
||||||
while(!menuShouldExit);
|
while(!menuShouldExit && !menuCloseRequested);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -321,8 +321,8 @@ void RosalinaMenu_ReturnToHomeMenu(void)
|
|||||||
|
|
||||||
if(pressed & KEY_A)
|
if(pressed & KEY_A)
|
||||||
{
|
{
|
||||||
menuLeave();
|
|
||||||
srvPublishToSubscriber(0x204, 0);
|
srvPublishToSubscriber(0x204, 0);
|
||||||
|
menuRequestClose();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if(pressed & KEY_B)
|
else if(pressed & KEY_B)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user