From c492b29a45aefc05336ce8d53f1a49e233f4ac39 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 26 Jan 2022 11:52:07 +0100 Subject: [PATCH] Nanotrace: Make nanotrace commonly usable CMake's auto symbol export is a plain hack and does not work for other build systems. Besides fixing some non-working implicit conversions when using Qt5.15. Change-Id: I80b77a4ebf8cad30c78c1c2ef2034e62d2063399 Reviewed-by: Christian Kandeler Reviewed-by: Reviewed-by: Christian Stenger --- .../instances/nodeinstanceclientproxy.cpp | 8 +++---- src/libs/nanotrace/CMakeLists.txt | 1 - src/libs/nanotrace/nanotrace.h | 21 +++++++++++++------ src/libs/nanotrace/nanotrace.qbs | 1 - .../instances/baseconnectionmanager.cpp | 4 ++-- .../instances/nodeinstanceserverproxy.cpp | 4 ++-- 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp index ae236266249..c1ca741e179 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp +++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceclientproxy.cpp @@ -206,12 +206,12 @@ void NodeInstanceClientProxy::writeCommand(const QVariant &command) SyncNanotraceCommand cmd = command.value(); NANOTRACE_INSTANT_ARGS("Sync", "writeCommand", {"name", cmd.name().toStdString()}, - {"counter", m_writeCommandCounter}); + {"counter", int64_t(m_writeCommandCounter)}); } else { NANOTRACE_INSTANT_ARGS("Update", "writeCommand", {"name", command.typeName()}, - {"counter", m_writeCommandCounter}); + {"counter", int64_t(m_writeCommandCounter)}); } } #endif @@ -409,14 +409,14 @@ void NodeInstanceClientProxy::readDataStream() SyncNanotraceCommand cmd = command.value(); NANOTRACE_INSTANT_ARGS("Sync", "readCommand", {"name", cmd.name().toStdString()}, - {"counter", readCommandCounter}); + {"counter", int64_t(readCommandCounter)}); // Do not dispatch this command. continue; } else { NANOTRACE_INSTANT_ARGS("Update", "readCommand", {"name", command.typeName()}, - {"counter", readCommandCounter}); + {"counter", int64_t(readCommandCounter)}); } } #endif diff --git a/src/libs/nanotrace/CMakeLists.txt b/src/libs/nanotrace/CMakeLists.txt index 053d7b1c487..6435063046f 100644 --- a/src/libs/nanotrace/CMakeLists.txt +++ b/src/libs/nanotrace/CMakeLists.txt @@ -7,6 +7,5 @@ add_qtc_library(Nanotrace PROPERTIES CXX_VISIBILITY_PRESET default VISIBILITY_INLINES_HIDDEN OFF - WINDOWS_EXPORT_ALL_SYMBOLS ON ) diff --git a/src/libs/nanotrace/nanotrace.h b/src/libs/nanotrace/nanotrace.h index c90407d6365..0df2be76df1 100644 --- a/src/libs/nanotrace/nanotrace.h +++ b/src/libs/nanotrace/nanotrace.h @@ -25,6 +25,15 @@ #pragma once +#include + +#if defined(NANOTRACE_LIBRARY) +# define NANOTRACESHARED_EXPORT Q_DECL_EXPORT +#else +# define NANOTRACESHARED_EXPORT Q_DECL_IMPORT +#endif + + #include #include #include @@ -68,7 +77,7 @@ using Units = std::chrono::nanoseconds; using Clock = std::chrono::high_resolution_clock; using TimePoint = std::chrono::time_point< Clock >; -class Arg +class NANOTRACESHARED_EXPORT Arg { public: using SupportedType = std::variant; @@ -82,19 +91,19 @@ private: SupportedType m_value; }; -void init(const std::string &process, const std::string &thread, const std::string &path); +NANOTRACESHARED_EXPORT void init(const std::string &process, const std::string &thread, const std::string &path); -void shutdown(); +NANOTRACESHARED_EXPORT void shutdown(); -void flush(); +NANOTRACESHARED_EXPORT void flush(); -void addTracePoint( +NANOTRACESHARED_EXPORT void addTracePoint( const std::string &name, const std::string &cat, char phase, std::initializer_list< Nanotrace::Arg > arguments); -class ScopeTracer +class NANOTRACESHARED_EXPORT ScopeTracer { public: ScopeTracer( diff --git a/src/libs/nanotrace/nanotrace.qbs b/src/libs/nanotrace/nanotrace.qbs index 388bfb20f87..0e0c9237dd7 100644 --- a/src/libs/nanotrace/nanotrace.qbs +++ b/src/libs/nanotrace/nanotrace.qbs @@ -2,7 +2,6 @@ QtcLibrary { name: "Nanotrace" cpp.defines: base.concat("NANOTRACE_LIBRARY", "NANOTRACE_ENABLED") - cpp.visibility: "default" files: [ "nanotrace.cpp", diff --git a/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp b/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp index 72552fdb7ae..2c9408bf424 100644 --- a/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp +++ b/src/plugins/qmldesigner/designercore/instances/baseconnectionmanager.cpp @@ -134,7 +134,7 @@ void BaseConnectionManager::readDataStream(Connection &connection) SyncNanotraceCommand cmd = command.value(); NANOTRACE_INSTANT_ARGS("Sync", "readCommand", {"name", cmd.name().toStdString()}, - {"counter", commandCounter}); + {"counter", int64_t(commandCounter)}); writeCommand(command); // Do not dispatch this command. @@ -143,7 +143,7 @@ void BaseConnectionManager::readDataStream(Connection &connection) } else { NANOTRACE_INSTANT_ARGS("Update", "readCommand", {"name", command.typeName()}, - {"counter", commandCounter}); + {"counter", int64_t(commandCounter)}); } } #endif diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 4f09eb7cf1a..01ed33ea495 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -196,12 +196,12 @@ void NodeInstanceServerProxy::writeCommand(const QVariant &command) SyncNanotraceCommand cmd = command.value(); NANOTRACE_INSTANT_ARGS("Sync", "writeCommand", {"name", cmd.name().toStdString()}, - {"counter", m_connectionManager.writeCounter()}); + {"counter", int64_t(m_connectionManager.writeCounter())}); } else { NANOTRACE_INSTANT_ARGS("Update", "writeCommand", {"name", command.typeName()}, - {"counter", m_connectionManager.writeCounter()}); + {"counter", int64_t(m_connectionManager.writeCounter())}); } #endif