summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-02-24 21:32:54 +0100
committerMichael Stahl <mstahl@redhat.com>2015-02-26 00:06:31 +0100
commit7fde44c85620f8079bc4863fe3f7ea1f69a0f88c (patch)
tree7aea72fc34409d320bebd342937cb7ee8c0a7c4e
parent88d4b2fb08b983531b1e0abc71b07f4bdecdc925 (diff)
tdf#89666: vcl: speed up HbLayoutEngine line layout for large paragraphs
When formatting a 180k char Writer paragraph, most of the time is spent in vcl::ScriptRun::next(), which is called twice per line from SwTxtGuess::Guess(), once via GetTxtBreak() and once via GetTxtSize(). In the second call, from GetTxtSize(), the end position of the line is known, and passed to vcl, and iterating beyond that position seems pointless. This reduces vcl::ScriptRun::next() from 24 to 11 billion callgrind cycles when built with GCC 4.9.2 -m32 -Os. Change-Id: Ia23fcccaf5ef9c9ecdcb54bfc8f0f8a043c8711e
-rw-r--r--vcl/generic/glyphs/gcach_layout.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index c6dfd48303c7..5010423c03be 100644
--- a/vcl/generic/glyphs/gcach_layout.cxx
+++ b/vcl/generic/glyphs/gcach_layout.cxx
@@ -370,7 +370,7 @@ bool HbLayoutEngine::Layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
rLayout.Reserve(nGlyphCapacity);
- vcl::ScriptRun aScriptRun(reinterpret_cast<const UChar *>(rArgs.mpStr), rArgs.mnLength);
+ vcl::ScriptRun aScriptRun(reinterpret_cast<const UChar *>(rArgs.mpStr), rArgs.mnEndCharPos);
Point aCurrPos(0, 0);
while (true)