From 2ba6b48df44cd5f68ae534c20451b0c1d6bf4d12 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Fri, 23 Feb 2024 12:54:16 +0100 Subject: [PATCH] QmlDesigner: Move thread local variables inside function Maybe make them inline but I think that is not working nice with DLLs. Change-Id: Ice220873bf4f9c87cb64cb3271aa1ca5cfb1dda2 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Thomas Hartmann Reviewed-by: --- .../projectstorage/projectstorage.cpp | 9 +++----- .../tracing/qmldesignertracing.cpp | 22 ++++++++++++------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.cpp b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.cpp index 700a85bc112..3e493e87724 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.cpp +++ b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.cpp @@ -9,14 +9,11 @@ namespace QmlDesigner { -namespace { - -thread_local NanotraceHR::StringViewCategory projectStorageCategory_{ - "project storage"_t, Tracing::eventQueue(), projectStorageCategory}; -} - NanotraceHR::StringViewCategory &projectStorageCategory() { + thread_local NanotraceHR::StringViewCategory + projectStorageCategory_{"project storage"_t, Tracing::eventQueue(), projectStorageCategory}; + return projectStorageCategory_; } diff --git a/src/plugins/qmldesigner/designercore/tracing/qmldesignertracing.cpp b/src/plugins/qmldesigner/designercore/tracing/qmldesignertracing.cpp index 790be02b701..d49c6156a65 100644 --- a/src/plugins/qmldesigner/designercore/tracing/qmldesignertracing.cpp +++ b/src/plugins/qmldesigner/designercore/tracing/qmldesignertracing.cpp @@ -7,31 +7,37 @@ namespace QmlDesigner { namespace Tracing { namespace { + using TraceFile = NanotraceHR::TraceFile; -TraceFile traceFile{"qml_designer.json"}; - -thread_local NanotraceHR::EventQueueData - stringViewEventQueueData(traceFile); - -thread_local NanotraceHR::EventQueueData - stringViewWithStringArgumentsEventQueueData(traceFile); +TraceFile &traceFile() +{ + static TraceFile traceFile{"qml_designer.json"}; + return traceFile; +} } // namespace EventQueue &eventQueue() { + thread_local NanotraceHR::EventQueueData + stringViewEventQueueData(traceFile()); + return stringViewEventQueueData; } EventQueueWithStringArguments &eventQueueWithStringArguments() { + thread_local NanotraceHR:: + EventQueueData + stringViewWithStringArgumentsEventQueueData(traceFile()); + return stringViewWithStringArgumentsEventQueueData; } StringEventQueue &stringEventQueue() { thread_local NanotraceHR::EventQueueData eventQueue( - traceFile); + traceFile()); return eventQueue; }