feat(servei): reinici real via execv

This commit is contained in:
JailDesigner committed 2026-05-25 17:29:42 +02:00
1 parent 774874deb0
commit a8ccb3fae1
5 files changed
+97 -11

No files matched your search

+8 -2
View File
@@ -7,11 +7,13 @@
#include "core/system/director.hpp"
#include "core/system/event_buffer.hpp"
#include "core/system/relaunch.hpp"
#include "utils/log.hpp"
auto SDL_AppInit(void** appstate, int argc, char* argv[]) -> SDL_AppResult {
(void)argc;
(void)argv;
// Desem argv perquè el menú de servei pugui demanar un reinici en calent
// (execv) sense haver de conèixer ni Director ni main.
System::Relaunch::setArgv(argc, argv);
// Logger primer de tot perquè l'arrencada del Director ja emet logs.
Log::init();
@@ -45,6 +47,10 @@ void SDL_AppQuit(void* appstate, SDL_AppResult result) {
{
std::unique_ptr<Director> director(static_cast<Director*>(appstate));
}
// Si el menú va demanar reinici, fem execv ara que tot està net. En èxit
// no torna (el procés és reemplaçat) i el "Bye!" no s'imprimeix — correcte,
// no és una sortida.
System::Relaunch::execIfRequested();
// Marcador de fi: ha de ser l'ÚLTIMA línia de log del programa.
Log::raw(Log::Level::INFO, "Bye!");
}