feat(servei): reinici real via execv
This commit is contained in:
1 parent
774874deb0
commit
a8ccb3fae1
5 files changed
+97
-11
No files matched your search
+8
-2
@@ -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!");
|
||||
}
|
||||
Reference in new issue
Block a user