summary refs log tree commit diff
path: root/src/main.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-07-01 19:40:53 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-07-01 19:40:53 +0300
commitccc6cd8dabdaf8ca66562e889147965f12fb19e9 (patch)
tree072ea585bf494b2daa1b6fa6cbbbdd6adf3da626 /src/main.cc
parentImplement dekstop notifications on Windows (#290) (diff)
downloadnheko-ccc6cd8dabdaf8ca66562e889147965f12fb19e9.tar.xz
Mark encrypted messages with a lock icon
Diffstat (limited to 'src/main.cc')
-rw-r--r--src/main.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main.cc b/src/main.cc

index 7ef5834e..bc264931 100644 --- a/src/main.cc +++ b/src/main.cc
@@ -38,6 +38,36 @@ #include "RunGuard.h" #include "version.hpp" +#if defined(Q_OS_LINUX) +#include <boost/stacktrace.hpp> +#include <signal.h> + +void +stacktraceHandler(int signum) +{ + auto dir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); + + std::signal(signum, SIG_DFL); + boost::stacktrace::safe_dump_to(dir.toStdString() + "/backtrace.dump"); + std::raise(SIGABRT); +} + +void +registerSignalHandlers() +{ + std::signal(SIGSEGV, &stacktraceHandler); + std::signal(SIGABRT, &stacktraceHandler); +} + +#else + +// No implementation for systems with no stacktrace support. +void +registerSignalHandlers() +{} + +#endif + QPoint screenCenter(int width, int height) { @@ -126,6 +156,8 @@ main(int argc, char *argv[]) createCacheDirectory(); + registerSignalHandlers(); + try { nhlog::init(QString("%1/nheko.log") .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation))