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:
TuxSH 2026-03-28 01:09:20 +01:00
parent 989fb59a35
commit c3767a3c36
3 changed files with 15 additions and 2 deletions

View File

@ -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);

View File

@ -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(&currentMenu->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);
}

View File

@ -321,8 +321,8 @@ void RosalinaMenu_ReturnToHomeMenu(void)
if(pressed & KEY_A)
{
menuLeave();
srvPublishToSubscriber(0x204, 0);
menuRequestClose();
return;
}
else if(pressed & KEY_B)