Skip to content
Snippets Groups Projects
  • Andrew Productengine's avatar
    d3eccbcd
    STORM-229 FIXED Fixed long loading times and stalling of Viewer while loading... · d3eccbcd
    Andrew Productengine authored
    STORM-229 FIXED Fixed long loading times and stalling of Viewer while loading big scripts or pasting a lot of text into script.
    
    The bug was fixed by Satomi Ahn. Here is the description of what causes the problem from her comment in ticket:
    "Disabling the loading of syntax keywords in LLScriptEdCore::postBuild() removes the freeze (and with it: syntax highlighting).
    So it obviously comes from the parsing of the text.
    
    I also noticed something else: by adding a llwarn in LLTextEditor::updateSegments(), I saw that this function was called a lot of times when loading a script, roughly once for each line in the script (naively I would have thought only necessary to update when finished... or to only update the new line).
    My llwarn was in the "if (mReflowIndex < S32_MAX && mKeywords.isLoaded())", which means that, at each call, the text is actually parsed for all keywords... so the parsing of the script becomes quadratic instead of linear!!!"
    
    - To fix this, Satomi added a flag depending on which parsing is disabled when it is not necessary.
    d3eccbcd
    History
    STORM-229 FIXED Fixed long loading times and stalling of Viewer while loading...
    Andrew Productengine authored
    STORM-229 FIXED Fixed long loading times and stalling of Viewer while loading big scripts or pasting a lot of text into script.
    
    The bug was fixed by Satomi Ahn. Here is the description of what causes the problem from her comment in ticket:
    "Disabling the loading of syntax keywords in LLScriptEdCore::postBuild() removes the freeze (and with it: syntax highlighting).
    So it obviously comes from the parsing of the text.
    
    I also noticed something else: by adding a llwarn in LLTextEditor::updateSegments(), I saw that this function was called a lot of times when loading a script, roughly once for each line in the script (naively I would have thought only necessary to update when finished... or to only update the new line).
    My llwarn was in the "if (mReflowIndex < S32_MAX && mKeywords.isLoaded())", which means that, at each call, the text is actually parsed for all keywords... so the parsing of the script becomes quadratic instead of linear!!!"
    
    - To fix this, Satomi added a flag depending on which parsing is disabled when it is not necessary.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
lltexteditor.cpp 59.94 KiB