Changeset View
Changeset View
Standalone View
Standalone View
src/pimuniqueapplication.cpp
Show All 33 Lines | |||||
34 | #include <QWidget> | 34 | #include <QWidget> | ||
35 | #include <QMainWindow> | 35 | #include <QMainWindow> | ||
36 | 36 | | |||
37 | #include <QDBusInterface> | 37 | #include <QDBusInterface> | ||
38 | #include <QDBusConnectionInterface> | 38 | #include <QDBusConnectionInterface> | ||
39 | 39 | | |||
40 | using namespace KontactInterface; | 40 | using namespace KontactInterface; | ||
41 | 41 | | |||
42 | namespace { | ||||
43 | | ||||
44 | const char kChromiumFlagsEnv[] = "QTWEBENGINE_CHROMIUM_FLAGS"; | ||||
45 | const char kDisableInProcessStackTraces[] = "--disable-in-process-stack-traces"; | ||||
46 | | ||||
47 | } | ||||
48 | | ||||
42 | //@cond PRIVATE | 49 | //@cond PRIVATE | ||
43 | class Q_DECL_HIDDEN KontactInterface::PimUniqueApplication::Private | 50 | class Q_DECL_HIDDEN KontactInterface::PimUniqueApplication::Private | ||
44 | { | 51 | { | ||
45 | public: | 52 | public: | ||
46 | Private() | 53 | Private() | ||
47 | : cmdArgs(new QCommandLineParser()) | 54 | : cmdArgs(new QCommandLineParser()) | ||
48 | {} | 55 | {} | ||
49 | 56 | | |||
50 | ~Private() | 57 | ~Private() | ||
51 | { | 58 | { | ||
52 | delete cmdArgs; | 59 | delete cmdArgs; | ||
53 | } | 60 | } | ||
54 | 61 | | |||
62 | static void disableChromiumCrashHandler() | ||||
63 | { | ||||
64 | // Disable Chromium's own crash handler, which overrides DrKonqi. | ||||
65 | auto flags = qgetenv(kChromiumFlagsEnv); | ||||
66 | if (!flags.contains(kDisableInProcessStackTraces)) { | ||||
67 | qputenv(kChromiumFlagsEnv, flags + " " + kDisableInProcessStackTraces); | ||||
68 | } | ||||
69 | } | ||||
70 | | ||||
55 | QCommandLineParser *const cmdArgs; | 71 | QCommandLineParser *const cmdArgs; | ||
56 | }; | 72 | }; | ||
57 | //@endcond | 73 | //@endcond | ||
58 | 74 | | |||
59 | PimUniqueApplication::PimUniqueApplication(int &argc, char **argv[]) | 75 | PimUniqueApplication::PimUniqueApplication(int &argc, char **argv[]) | ||
60 | : QApplication(argc, *argv) | 76 | : QApplication(argc, *argv) | ||
61 | , d(new Private()) | 77 | , d(new Private()) | ||
62 | { | 78 | { | ||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Line(s) | 124 | #endif | |||
127 | } | 143 | } | ||
128 | 144 | | |||
129 | qCDebug(KONTACTINTERFACE_LOG) << "kontact not running -- start standalone application"; | 145 | qCDebug(KONTACTINTERFACE_LOG) << "kontact not running -- start standalone application"; | ||
130 | 146 | | |||
131 | if (unique) { | 147 | if (unique) { | ||
132 | QDBusConnection::sessionBus().registerService(serviceName); | 148 | QDBusConnection::sessionBus().registerService(serviceName); | ||
133 | } | 149 | } | ||
134 | 150 | | |||
151 | // Make sure we have DrKonqi | ||||
152 | Private::disableChromiumCrashHandler(); | ||||
153 | | ||||
135 | static_cast<PimUniqueApplication *>(qApp)->activate(arguments, QDir::currentPath()); | 154 | static_cast<PimUniqueApplication *>(qApp)->activate(arguments, QDir::currentPath()); | ||
136 | return true; | 155 | return true; | ||
137 | } | 156 | } | ||
138 | 157 | | |||
139 | int PimUniqueApplication::newInstance() | 158 | int PimUniqueApplication::newInstance() | ||
140 | { | 159 | { | ||
141 | return newInstance(KStartupInfo::startupId(), QStringList() << QApplication::applicationName(), QDir::currentPath()); | 160 | return newInstance(KStartupInfo::startupId(), QStringList() << QApplication::applicationName(), QDir::currentPath()); | ||
142 | } | 161 | } | ||
Show All 32 Lines |