diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-10-24 12:57:01 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-15 13:56:58 +0100 |
commit | 2ca6606dca44253df49f4805028a9878e4fa0237 (patch) | |
tree | fe8abcc26f3ad6802c236a9e4f9b193270246b66 /src/gui/kernel/qguiapplication.cpp | |
parent | 9ae215925159f4e8f1a88fc6691c916eead67539 (diff) |
Bring back -nograb/-dograb for debugging.
Task-number: QTBUG-27632
Change-Id: I4b59df01519af4684d9dbe6e4b6c18a5ebd9aeae
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 4c4e75c4f6..949c963d0c 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -151,6 +151,7 @@ QWindow *QGuiApplicationPrivate::focus_window = 0; static QBasicMutex applicationFontMutex; QFont *QGuiApplicationPrivate::app_font = 0; bool QGuiApplicationPrivate::obey_desktop_settings = true; +bool QGuiApplicationPrivate::noGrab = false; static qreal fontSmoothingGamma = 1.7; @@ -864,8 +865,18 @@ void QGuiApplicationPrivate::setEventDispatcher(QAbstractEventDispatcher *eventD } +#if defined(QT_DEBUG) && defined(Q_OS_LINUX) +// Find out if our parent process is gdb by looking at the 'exe' symlink under /proc. +static bool runningUnderDebugger() +{ + const QFileInfo parentProcExe(QStringLiteral("/proc/") + QString::number(getppid()) + QStringLiteral("/exe")); + return parentProcExe.isSymLink() && parentProcExe.symLinkTarget().endsWith(QStringLiteral("/gdb")); +} +#endif + void QGuiApplicationPrivate::init() { + bool doGrabUnderDebugger = false; QList<QByteArray> pluginList; // Get command line params @@ -894,6 +905,10 @@ void QGuiApplicationPrivate::init() QDir::setCurrent(qbundlePath.section(QLatin1Char('/'), 0, -2)); } #endif + } else if (arg == "-nograb") { + QGuiApplicationPrivate::noGrab = true; + } else if (arg == "-dograb") { + doGrabUnderDebugger = true; } else { argv[j++] = argv[i]; } @@ -904,6 +919,16 @@ void QGuiApplicationPrivate::init() argc = j; } +#if defined(QT_DEBUG) && defined(Q_OS_LINUX) + if (!doGrabUnderDebugger && !QGuiApplicationPrivate::noGrab && runningUnderDebugger()) { + QGuiApplicationPrivate::noGrab = true; + qDebug("Qt: gdb: -nograb added to command-line options.\n" + "\t Use the -dograb option to enforce grabbing."); + } +#else + Q_UNUSED(doGrabUnderDebugger) +#endif + // Load environment exported generic plugins foreach (const QByteArray &plugin, qgetenv("QT_QPA_GENERIC_PLUGINS").split(',')) pluginList << plugin; |