diff --git a/.gitignore b/.gitignore index 77b25b8..cad8749 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ cmake-build-debug* build/ .vscode/ third_party/ +compile_commands.json *-protocol.o *-protocol.c -*-protocol.h \ No newline at end of file +*-protocol.h diff --git a/main.cpp b/main.cpp index 0e583fd..f1e33d6 100644 --- a/main.cpp +++ b/main.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -32,12 +33,17 @@ #include "common.h" WallpaperEngine::Application::CWallpaperApplication* appPointer; +QCoreApplication* globalApp = nullptr; + class UIWindow; void signalhandler(int sig) { - if (appPointer == nullptr) - return; + if (appPointer == nullptr) { + if(globalApp != nullptr) { + globalApp->quit(); + } else return; + } appPointer->signal (sig); } @@ -68,12 +74,12 @@ int main (int argc, char* argv[]) { wallpaperPaths.push_back(entry.path()); } - for (const std::string s : wallpaperPaths) { - std::cout << s << "\r\n"; - } - - QApplication qapp(argc, argv); + globalApp = &qapp; + + // Signal for properly close the app + std::signal (SIGINT, signalhandler); + std::signal (SIGTERM, signalhandler); auto* uiWindow = new UIWindow(nullptr, &qapp);