Browse Source

Directly pass String to profiler zones [pre-commit]

Michael Ragazzon 4 months ago
parent
commit
0604d9a5c5

+ 8 - 4
Include/RmlUi/Core/Profiling.h

@@ -33,6 +33,10 @@
 
 	#include <tracy/Tracy.hpp>
 
+	#define RMLUI_PROFILING_PASS_STRING(value, TracyFunc)   \
+		const Rml::String& rmlui_tracy_##TracyFunc = value; \
+		TracyFunc(rmlui_tracy_##TracyFunc.c_str(), rmlui_tracy_##TracyFunc.size())
+
 	#define RMLUI_ZoneNamed(varname, active) ZoneNamed(varname, active)
 	#define RMLUI_ZoneNamedN(varname, name, active) ZoneNamedN(varname, name, active)
 	#define RMLUI_ZoneNamedC(varname, color, active) ZoneNamedC(varname, color, active)
@@ -43,8 +47,8 @@
 	#define RMLUI_ZoneScopedC(color) ZoneScopedC(color)
 	#define RMLUI_ZoneScopedNC(name, color) ZoneScopedNC(name, color)
 
-	#define RMLUI_ZoneText(txt, size) ZoneText(txt, size)
-	#define RMLUI_ZoneName(txt, size) ZoneName(txt, size)
+	#define RMLUI_ZoneText(txt) RMLUI_PROFILING_PASS_STRING(txt, ZoneText)
+	#define RMLUI_ZoneName(txt) RMLUI_PROFILING_PASS_STRING(txt, ZoneName)
 
 	#define RMLUI_TracyPlot(name, val) TracyPlot(name, val)
 
@@ -65,8 +69,8 @@
 	#define RMLUI_ZoneScopedC(color)
 	#define RMLUI_ZoneScopedNC(name, color)
 
-	#define RMLUI_ZoneText(txt, size)
-	#define RMLUI_ZoneName(txt, size)
+	#define RMLUI_ZoneText(txt)
+	#define RMLUI_ZoneName(txt)
 
 	#define RMLUI_TracyPlot(name, val)
 

+ 2 - 8
Source/Core/Element.cpp

@@ -141,11 +141,8 @@ Element::~Element()
 
 void Element::Update(float dp_ratio, Vector2f vp_dimensions, bool is_dom_element)
 {
-#ifdef RMLUI_TRACY_PROFILING
-	auto name = GetAddress(false, false);
 	RMLUI_ZoneScoped;
-	RMLUI_ZoneText(name.c_str(), name.size());
-#endif
+	RMLUI_ZoneText(GetAddress(false, false));
 
 	OnUpdate();
 
@@ -212,11 +209,8 @@ void Element::UpdateProperties(const float dp_ratio, const Vector2f vp_dimension
 
 void Element::Render()
 {
-#ifdef RMLUI_TRACY_PROFILING
-	auto name = GetAddress(false, false);
 	RMLUI_ZoneScoped;
-	RMLUI_ZoneText(name.c_str(), name.size());
-#endif
+	RMLUI_ZoneText(GetAddress(false, false));
 
 	UpdateAbsoluteOffsetAndRenderBoxData();
 

+ 1 - 1
Source/Core/ElementDocument.cpp

@@ -530,7 +530,7 @@ void ElementDocument::UpdateLayout()
 	if (layout_dirty)
 	{
 		RMLUI_ZoneScoped;
-		RMLUI_ZoneText(source_url.c_str(), source_url.size());
+		RMLUI_ZoneText(source_url);
 
 		const bool allow_layout_cache = !HasAttribute("rmlui-disable-layout-cache");
 

+ 2 - 12
Source/Core/Layout/BlockFormattingContext.cpp

@@ -115,12 +115,8 @@ static OuterDisplayType GetOuterDisplayType(Style::Display display)
 UniquePtr<LayoutBox> BlockFormattingContext::Format(ContainerBox* parent_container, Element* element, Vector2f containing_block, const Box& box)
 {
 	RMLUI_ASSERT(parent_container && element);
-
-#ifdef RMLUI_TRACY_PROFILING
 	RMLUI_ZoneScopedC(0xB22222);
-	auto name = CreateString("%s %x", element->GetAddress(false, false).c_str(), element);
-	RMLUI_ZoneName(name.c_str(), name.size());
-#endif
+	RMLUI_ZoneName(CreateString("%s %x", element->GetAddress(false, false).c_str(), element));
 
 	float min_height, max_height;
 	LayoutDetails::GetDefiniteMinMaxHeight(min_height, max_height, element->GetComputedValues(), box, containing_block.y);
@@ -215,14 +211,8 @@ bool BlockFormattingContext::FormatInlineBox(BlockContainer* parent_container, E
 
 bool BlockFormattingContext::FormatBlockContainerChild(BlockContainer* parent_container, Element* element)
 {
-#ifdef RMLUI_TRACY_PROFILING
 	RMLUI_ZoneScoped;
-	auto name = CreateString(">%s %x", element->GetAddress(false, false).c_str(), element);
-	RMLUI_ZoneName(name.c_str(), name.size());
-#endif
-
-	if (element->GetId() == "outer")
-		int x = 0;
+	RMLUI_ZoneName(CreateString(">%s %x", element->GetAddress(false, false).c_str(), element));
 
 	// Check for special formatting tags.
 	if (element->GetTagName() == "br")