[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - vcl/generic

Michael Stahl mstahl at redhat.com
Fri Feb 27 04:03:21 PST 2015


 vcl/generic/glyphs/gcach_layout.cxx |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 623f16d7a47020600e2b4ba03aa6a617545b0d93
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Feb 24 21:32:54 2015 +0100

    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.
    
    (cherry picked from commit 7fde44c85620f8079bc4863fe3f7ea1f69a0f88c)
    
    Conflicts:
    	vcl/generic/glyphs/gcach_layout.cxx
    
    Change-Id: Ia23fcccaf5ef9c9ecdcb54bfc8f0f8a043c8711e
    Reviewed-on: https://gerrit.libreoffice.org/14645
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index 3f065bb..bf2eab2 100644
--- a/vcl/generic/glyphs/gcach_layout.cxx
+++ b/vcl/generic/glyphs/gcach_layout.cxx
@@ -372,7 +372,7 @@ bool HbLayoutEngine::layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
 
     rLayout.Reserve(nGlyphCapacity);
 
-    ScriptRun aScriptRun(reinterpret_cast<const UChar *>(rArgs.mpStr), rArgs.mnLength);
+    ScriptRun aScriptRun(reinterpret_cast<const UChar *>(rArgs.mpStr), rArgs.mnEndCharPos);
 
     Point aCurrPos(0, 0);
     while (true)


More information about the Libreoffice-commits mailing list