mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-26 08:05:38 +00:00
don't call shutdown from ES directly - which causes it to not save the gameslists on exit. Instead create files
/tmp/es-restart /tmp/es-sysrestart /tmp/es-shutdown to decide what we want to do. there is an emulationstation.sh launch script to handle this
This commit is contained in:
parent
6f0b63b1bb
commit
fe86459f99
18
emulationstation.sh
Executable file
18
emulationstation.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
rm -f /tmp/es-restart /tmp/es-sysrestart /tmp/es-shutdown
|
||||||
|
./emulationstation "$@"
|
||||||
|
[ -f /tmp/es-restart ] && continue
|
||||||
|
if [ -f /tmp/es-sysrestart ]; then
|
||||||
|
rm -f /tmp/es-sysrestart
|
||||||
|
sudo reboot
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ -f /tmp/es-shutdown ]; then
|
||||||
|
rm -f /tmp/es-shutdown
|
||||||
|
sudo poweroff
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
done
|
|
@ -180,7 +180,18 @@ GuiMenu::GuiMenu(Window* window) : GuiComponent(window), mMenu(window, "MAIN MEN
|
||||||
row.makeAcceptInputHandler([window] {
|
row.makeAcceptInputHandler([window] {
|
||||||
window->pushGui(new GuiMsgBox(window, "REALLY RESTART?", "YES",
|
window->pushGui(new GuiMsgBox(window, "REALLY RESTART?", "YES",
|
||||||
[] {
|
[] {
|
||||||
if(runRestartCommand() != 0)
|
if(quitES("/tmp/es-restart") != 0)
|
||||||
|
LOG(LogWarning) << "Restart terminated with non-zero result!";
|
||||||
|
}, "NO", nullptr));
|
||||||
|
});
|
||||||
|
row.addElement(std::make_shared<TextComponent>(window, "RESTART EMULATIONSTATION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true);
|
||||||
|
s->addRow(row);
|
||||||
|
|
||||||
|
row.elements.clear();
|
||||||
|
row.makeAcceptInputHandler([window] {
|
||||||
|
window->pushGui(new GuiMsgBox(window, "REALLY RESTART?", "YES",
|
||||||
|
[] {
|
||||||
|
if(quitES("/tmp/es-sysrestart") != 0)
|
||||||
LOG(LogWarning) << "Restart terminated with non-zero result!";
|
LOG(LogWarning) << "Restart terminated with non-zero result!";
|
||||||
}, "NO", nullptr));
|
}, "NO", nullptr));
|
||||||
});
|
});
|
||||||
|
@ -191,7 +202,7 @@ GuiMenu::GuiMenu(Window* window) : GuiComponent(window), mMenu(window, "MAIN MEN
|
||||||
row.makeAcceptInputHandler([window] {
|
row.makeAcceptInputHandler([window] {
|
||||||
window->pushGui(new GuiMsgBox(window, "REALLY SHUTDOWN?", "YES",
|
window->pushGui(new GuiMsgBox(window, "REALLY SHUTDOWN?", "YES",
|
||||||
[] {
|
[] {
|
||||||
if(runShutdownCommand() != 0)
|
if(quitES("/tmp/es-shutdown") != 0)
|
||||||
LOG(LogWarning) << "Shutdown terminated with non-zero result!";
|
LOG(LogWarning) << "Shutdown terminated with non-zero result!";
|
||||||
}, "NO", nullptr));
|
}, "NO", nullptr));
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
#include <SDL.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
|
@ -70,3 +72,19 @@ int runSystemCommand(const std::string& cmd_utf8)
|
||||||
return system(cmd_utf8.c_str());
|
return system(cmd_utf8.c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int quitES(const std::string& filename)
|
||||||
|
{
|
||||||
|
touch(filename);
|
||||||
|
SDL_Event* quit = new SDL_Event();
|
||||||
|
quit->type = SDL_QUIT;
|
||||||
|
SDL_PushEvent(quit);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void touch(const std::string& filename)
|
||||||
|
{
|
||||||
|
int fd = open(filename.c_str(), O_CREAT|O_WRONLY, 0644);
|
||||||
|
if (fd >= 0)
|
||||||
|
close(fd);
|
||||||
|
}
|
|
@ -22,3 +22,5 @@ std::string getHomePath();
|
||||||
int runShutdownCommand(); // shut down the system (returns 0 if successful)
|
int runShutdownCommand(); // shut down the system (returns 0 if successful)
|
||||||
int runRestartCommand(); // restart the system (returns 0 if successful)
|
int runRestartCommand(); // restart the system (returns 0 if successful)
|
||||||
int runSystemCommand(const std::string& cmd_utf8); // run a utf-8 encoded in the shell (requires wstring conversion on Windows)
|
int runSystemCommand(const std::string& cmd_utf8); // run a utf-8 encoded in the shell (requires wstring conversion on Windows)
|
||||||
|
int quitES(const std::string& filename);
|
||||||
|
void touch(const std::string& filename);
|
||||||
|
|
Loading…
Reference in a new issue