summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-04-08 22:53:56 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-04-09 20:48:34 +0300
commit5f91a3faf3ef0b9d0a6c3424fff119992dc0822a (patch)
tree31fe46c41da8a3f691cbc0e456f1b5f95f039a1a /indra/newview
parent130c50cf8d4de021f510b17fd02fcac88a67c5e6 (diff)
#5626 LLTextBase optimization
by caching string width
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llexpandabletextbox.cpp2
-rw-r--r--indra/newview/llviewertexteditor.cpp12
-rw-r--r--indra/newview/pipeline.cpp8
3 files changed, 16 insertions, 6 deletions
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 5c46eb9d80..41ae47b645 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -52,7 +52,7 @@ public:
return copy;
}
- /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height)
{
// more label always spans width of text box
if (num_chars == 0)
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 210cd62d6f..95e34b4df1 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -189,7 +189,12 @@ public:
return new LLEmbeddedItemSegment(mStart, mImage, mItem, *editor);
}
- /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
+ /*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height)
+ {
+ return getSegmentDimensionsF32(first_char, num_chars, width, height);
+ }
+
+ inline bool getSegmentDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
{
if (num_chars == 0)
{
@@ -213,8 +218,9 @@ public:
}
else
{
- S32 width, height;
- getDimensions(mStart, 1, width, height);
+ F32 width;
+ S32 height;
+ getSegmentDimensionsF32(mStart, 1, width, height);
if (width > num_pixels)
{
return 0;
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index c9d53bbcbc..4ef88f5deb 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -609,7 +609,9 @@ void LLPipeline::init()
{
cntrl_ptr->getCommitSignal()->connect([](LLControlVariable* control, const LLSD& value, const LLSD& previous)
{
- LLFontVertexBuffer::enableBufferCollection(control->getValue().asBoolean());
+ bool enable_buffers = control->getValue().asBoolean();
+ LLFontVertexBuffer::enableBufferCollection(enable_buffers);
+ LLFontWidthBuffer::enableBufferCollection(enable_buffers);
});
}
}
@@ -1146,7 +1148,9 @@ void LLPipeline::refreshCachedSettings()
LLVOAvatar::updateImpostorRendering(LLVOAvatar::sMaxNonImpostors);
}
- LLFontVertexBuffer::enableBufferCollection(gSavedSettings.getBOOL("CollectFontVertexBuffers"));
+ bool enable_buffers = gSavedSettings.getBOOL("CollectFontVertexBuffers");
+ LLFontVertexBuffer::enableBufferCollection(enable_buffers);
+ LLFontWidthBuffer::enableBufferCollection(enable_buffers);
}
void LLPipeline::releaseGLBuffers()