aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/winutils.cpp
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@digia.com>2014-04-04 13:03:40 +0200
committerKai Koehne <kai.koehne@digia.com>2014-04-07 10:18:57 +0200
commit453d191d0f351d4588fa5840fe94684c93088f25 (patch)
tree6211884f16461b920ee2a992587fd26124d9f5c3 /src/libs/utils/winutils.cpp
parent254ecd19b2e6402dfb04170e90b28c09fdeb0b75 (diff)
Prevent 'qmake -query' from bringing up modal message dialog on startup
Temporarily set the ErrorMode so that no Windows error message box will show up in case qmake fails to run (e.g. because of missing .dll's). The error mode will automatically be inherited by child processes. This fixes an issue that actually became virulent by another bug fix ( cbb053068ccc6399dc7a39 ). Task-number: QTCREATORBUG-11962 Change-Id: I5baccf52baee46f3d45b69ea0a13d77e4e113fbd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/libs/utils/winutils.cpp')
-rw-r--r--src/libs/utils/winutils.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp
index 4e75d1eeeee..dfdb0cadd95 100644
--- a/src/libs/utils/winutils.cpp
+++ b/src/libs/utils/winutils.cpp
@@ -172,4 +172,22 @@ QTCREATOR_UTILS_EXPORT bool is64BitWindowsBinary(const QString &binaryIn)
#endif
}
+WindowsCrashDialogBlocker::WindowsCrashDialogBlocker()
+#ifdef Q_OS_WIN
+ : silenceErrorMode(SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS),
+ originalErrorMode(SetErrorMode(silenceErrorMode))
+#endif
+{
+}
+
+WindowsCrashDialogBlocker::~WindowsCrashDialogBlocker()
+{
+#ifdef Q_OS_WIN
+ unsigned int errorMode = SetErrorMode(originalErrorMode);
+ // someone else messed with the error mode in between? Better not touch ...
+ QTC_ASSERT(errorMode == silenceErrorMode, SetErrorMode(errorMode));
+#endif
+}
+
+
} // namespace Utils