v2.9.8: Soft-Reboot über ns:s (wie Nimbus) statt Hardware-Reset beim Umschalten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Nico Meister
2026-10-19 19:00:18 +02:00
co-authored by Claude Opus 5.5
parent f05fd2fc16
commit 23bf1abca8
3 changed files with 12 additions and 6 deletions
+9 -3
View File
@@ -544,6 +544,7 @@ int main(int argc, char **argv)
UpdateState lastUpd = UPD_IDLE;
int restartIn = 0; // Frames bis zum automatischen Neustart der App nach einem Update
int rebootIn = 0; // Frames bis zum Neustart des 3DS nach dem Umschalten
bool softReboot = false;
// Patches alter Versionen lagen an einer Stelle, an der Luma sie nicht lädt
if (patch_migrate())
@@ -663,9 +664,9 @@ int main(int argc, char **argv)
spotpassTestFrames = -1;
// Neustart erst, wenn die Freunde-Anmeldung durch ist (höchstens ein paar Sekunden)
if (rebootIn > 0 && --rebootIn == 0 && R_FAILED(APT_HardwareResetAsync())) {
snprintf(msg, sizeof(msg), "Neustart fehlgeschlagen.\nBitte den 3DS von Hand neu starten.");
}
// Schneller Neustart wie bei Nimbus (Soft-Reboot über ns:s, ohne boot9strap/Luma-Splash): erst die App
// sauber beenden, dann neu starten (unten nach dem Aufräumen)
if (rebootIn > 0 && --rebootIn == 0) { softReboot = true; break; }
if (restartIn > 0 && --restartIn == 0) {
if (relaunch_prepare(selfPath)) break;
@@ -697,6 +698,11 @@ int main(int argc, char **argv)
}
clean = admin_finish() && clean;
clean = update_finish() && clean;
if (softReboot) {
Result rc = nsInit();
if (R_SUCCEEDED(rc)) rc = NS_RebootSystem(); // kehrt bei Erfolg nicht zurück
if (R_FAILED(rc)) APT_HardwareResetAsync(); // Notlösung: kompletter Neustart
}
if (!clean) {
// Hart beenden, ohne Speicher freizugeben (der Kernel räumt alles auf)
aptExit();