diff options
author | Rafael Roquetto <rafael.roquetto@kdab.com> | 2017-02-01 17:32:13 -0200 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2018-01-28 19:17:02 +0000 |
commit | 48bce2e8f0d787342f3e0f86335460fa25e8ac8f (patch) | |
tree | 038af77f6e112f6c9a348a386e9c1eaff3aeab47 /src/gui | |
parent | 2b7de16fbe399daa00986f2d32d05cfe51966b66 (diff) |
Support for LTTNG and ETW tracing
This commit introduces minimal support for instrumentation within Qt.
Currently, only LTTNG/Linux and ETW/Windows are supported.
Change-Id: I59b48cf83acf5532a998bb493e6379e9177e14c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/gui.pro | 3 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 10 | ||||
-rw-r--r-- | src/gui/qtgui.tracepoints | 8 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase.cpp | 10 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/gui/gui.pro b/src/gui/gui.pro index f8cec00b82..759d6f3cbf 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -95,3 +95,6 @@ qtConfig(angle) { qtConfig(egl): CMAKE_EGL_INCDIRS = $$cmakePortablePaths($$QMAKE_INCDIR_EGL) QMAKE_DYNAMIC_LIST_FILE = $$PWD/QtGui.dynlist + +TRACEPOINT_PROVIDER = $$PWD/qtgui.tracepoints +CONFIG += qt_tracepoints diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 3d85f47f34..70b4869442 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -111,6 +111,8 @@ # include <QtCore/QLibraryInfo> #endif // Q_OS_WIN +#include <qtgui_tracepoints_p.h> + #include <ctype.h> QT_BEGIN_NAMESPACE @@ -1360,6 +1362,8 @@ void QGuiApplicationPrivate::eventDispatcherReady() void QGuiApplicationPrivate::init() { + Q_TRACE(qguiapplicationprivate_init_entry); + #if defined(Q_OS_MACOS) QMacAutoReleasePool pool; #endif @@ -1522,6 +1526,8 @@ void QGuiApplicationPrivate::init() if (!QGuiApplicationPrivate::displayName) QObject::connect(q, &QGuiApplication::applicationNameChanged, q, &QGuiApplication::applicationDisplayNameChanged); + + Q_TRACE(qguiapplicationprivate_init_exit); } extern void qt_cleanupFontDatabase(); @@ -1756,6 +1762,8 @@ bool QGuiApplicationPrivate::processNativeEvent(QWindow *window, const QByteArra void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e) { + Q_TRACE(qguiapplicationprivate_processwsevents_entry, e->type); + switch(e->type) { case QWindowSystemInterfacePrivate::Mouse: QGuiApplicationPrivate::processMouseEvent(static_cast<QWindowSystemInterfacePrivate::MouseEvent *>(e)); @@ -1864,6 +1872,8 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv qWarning() << "Unknown user input event type:" << e->type; break; } + + Q_TRACE(qguiapplicationprivate_processwsevents_exit, e->type); } /*! \internal diff --git a/src/gui/qtgui.tracepoints b/src/gui/qtgui.tracepoints new file mode 100644 index 0000000000..aa8a8ede57 --- /dev/null +++ b/src/gui/qtgui.tracepoints @@ -0,0 +1,8 @@ +qfontdatabase_addapplicationfont(const QString &filename) +qfontdatabase_load(const QString &family, int pointSize) +qfontdatabase_loadengine(const QString &family, int pointSize) +qfontdatabaseprivate_addappfont(const QString &fileName) +qguiapplicationprivate_init_entry() +qguiapplicationprivate_init_exit() +qguiapplicationprivate_processwsevents_entry(int type) +qguiapplicationprivate_processwsevents_exit(int type) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 4be2197c68..404a722e29 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -74,6 +74,7 @@ # define FM_DEBUG if (false) qDebug #endif +#include <qtgui_tracepoints_p.h> QT_BEGIN_NAMESPACE @@ -1009,6 +1010,8 @@ QFontEngine *loadEngine(int script, const QFontDef &request, QFontEngine *engine = loadSingleEngine(script, request, family, foundry, style, size); if (engine && !(request.styleStrategy & QFont::NoFontMerging) && !engine->symbol) { + Q_TRACE(qfontdatabase_loadengine, request.family, request.pointSize); + QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); QFontEngineMulti *pfMultiEngine = pfdb->fontEngineMulti(engine, QChar::Script(script)); if (!request.fallBackFamilies.isEmpty()) { @@ -2439,6 +2442,8 @@ int QFontDatabasePrivate::addAppFont(const QByteArray &fontData, const QString & font.data = fontData; font.fileName = fileName; + Q_TRACE(qfontdatabaseprivate_addappfont, fileName); + int i; for (i = 0; i < applicationFonts.count(); ++i) if (applicationFonts.at(i).families.isEmpty()) @@ -2494,6 +2499,9 @@ int QFontDatabase::addApplicationFont(const QString &fileName) QFile f(fileName); if (!f.open(QIODevice::ReadOnly)) return -1; + + Q_TRACE(qfontdatabase_addapplicationfont, fileName); + data = f.readAll(); } QMutexLocker locker(fontDatabaseMutex()); @@ -2792,6 +2800,8 @@ void QFontDatabase::load(const QFontPrivate *d, int script) QFontEngine *fe = nullptr; + Q_TRACE(qfontdatabase_load, req.family, req.pointSize); + req.fallBackFamilies = fallBackFamilies; if (!req.fallBackFamilies.isEmpty()) req.family = req.fallBackFamilies.takeFirst(); |