summaryrefslogtreecommitdiff
path: root/gui/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/main.cpp')
-rw-r--r--gui/main.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/gui/main.cpp b/gui/main.cpp
index 976f2cd..fe96caa 100644
--- a/gui/main.cpp
+++ b/gui/main.cpp
@@ -46,13 +46,14 @@ QString getAppName(QJsonValue info, QString provider) {
return "BitmaskVPN";
}
-void catchUnixSignals(std::initializer_list<int> quitSignals) {
- auto handler = [](int sig) -> void {
- printf("\nCatched signal(%d): quitting\n", sig);
- Quit();
- QApplication::quit();
- };
+auto handler = [](int sig) -> void {
+ printf("\nCatched signal(%d): quitting\n", sig);
+ Quit();
+ QApplication::quit();
+};
+#ifndef OS_WIN
+void catchUnixSignals(std::initializer_list<int> quitSignals) {
sigset_t blocking_mask;
sigemptyset(&blocking_mask);
for (auto sig : quitSignals)
@@ -66,6 +67,7 @@ void catchUnixSignals(std::initializer_list<int> quitSignals) {
for (auto sig : quitSignals)
sigaction(sig, &sa, nullptr);
}
+#endif
int main(int argc, char **argv) {
Backend backend;
@@ -80,7 +82,12 @@ int main(int argc, char **argv) {
app.setQuitOnLastWindowClosed(false);
app.setAttribute(Qt::AA_UseHighDpiPixmaps);
+#ifdef OS_WIN
+ signal(SIGINT, handler);
+ signal(SIGTERM, handler);
+#else
catchUnixSignals({SIGINT, SIGTERM});
+#endif
/* load providers json */
QFile providerJson (":/providers.json");