sc/inc/document.hxx                           |    2 +-
 sc/source/core/data/column2.cxx               |    4 +---
 sc/source/core/data/documen2.cxx              |    5 ++---
 sc/source/core/data/patattr.cxx               |   12 ++++++------
 sc/source/ui/Accessibility/AccessibleText.cxx |    4 ++--
 sc/source/ui/unoobj/textuno.cxx               |    2 +-
 6 files changed, 13 insertions(+), 16 deletions(-)

New commits:
commit 2b58bb92b3d5da97290a0f273125ebc34fc5082b
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Jun 24 15:03:17 2019 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Jun 25 08:28:56 2019 +0200

    tdf#94677 Calc is slow opening large CSV, avoid std::shared_ptr
    
    Shaves 2s off a load time of 48s
    
    Change-Id: I616d8b4280bee64e7c25eda8523a13cb80b121ad
    Reviewed-on: https://gerrit.libreoffice.org/74640
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx
index bf3d1dc115e2..d3ce46ddff61 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -542,14 +542,14 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& 
rEditSet, const SfxItemSet& r
 {
     //  Read Items
 
-    std::shared_ptr<SvxColorItem> 
aColorItem(std::make_shared<SvxColorItem>(EE_CHAR_COLOR));              // use 
item as-is
-    std::shared_ptr<SvxFontItem> 
aFontItem(std::make_shared<SvxFontItem>(EE_CHAR_FONTINFO));            // use 
item as-is
-    std::shared_ptr<SvxFontItem> 
aCjkFontItem(std::make_shared<SvxFontItem>(EE_CHAR_FONTINFO_CJK));            
// use item as-is
-    std::shared_ptr<SvxFontItem> 
aCtlFontItem(std::make_shared<SvxFontItem>(EE_CHAR_FONTINFO_CTL));            
// use item as-is
+    std::unique_ptr<SvxColorItem> 
aColorItem(std::make_unique<SvxColorItem>(EE_CHAR_COLOR));              // use 
item as-is
+    std::unique_ptr<SvxFontItem> 
aFontItem(std::make_unique<SvxFontItem>(EE_CHAR_FONTINFO));            // use 
item as-is
+    std::unique_ptr<SvxFontItem> 
aCjkFontItem(std::make_unique<SvxFontItem>(EE_CHAR_FONTINFO_CJK));            
// use item as-is
+    std::unique_ptr<SvxFontItem> 
aCtlFontItem(std::make_unique<SvxFontItem>(EE_CHAR_FONTINFO_CTL));            
// use item as-is
     long            nTHeight, nCjkTHeight, nCtlTHeight;     // Twips
     FontWeight      eWeight, eCjkWeight, eCtlWeight;
-    std::shared_ptr<SvxUnderlineItem> 
aUnderlineItem(std::make_shared<SvxUnderlineItem>(LINESTYLE_NONE, 
EE_CHAR_UNDERLINE));
-    std::shared_ptr<SvxOverlineItem> 
aOverlineItem(std::make_shared<SvxOverlineItem>(LINESTYLE_NONE, 
EE_CHAR_OVERLINE));
+    std::unique_ptr<SvxUnderlineItem> 
aUnderlineItem(std::make_unique<SvxUnderlineItem>(LINESTYLE_NONE, 
EE_CHAR_UNDERLINE));
+    std::unique_ptr<SvxOverlineItem> 
aOverlineItem(std::make_unique<SvxOverlineItem>(LINESTYLE_NONE, 
EE_CHAR_OVERLINE));
     bool            bWordLine;
     FontStrikeout   eStrike;
     FontItalic      eItalic, eCjkItalic, eCtlItalic;
commit c47d0174f2c6c3ebcb3b33276d0277e7aceac330
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Jun 24 11:41:37 2019 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Jun 25 08:28:49 2019 +0200

    tdf#94677 Calc is slow opening large CSV, avoid reset SetUpdateMode
    
    Avoid resetting SetUpdateMode in CreateFieldEditEngine while calculating
    row height.
    
    This takes the time from 1m25 to 49s for me.
    
    Change-Id: If406eac1a8b031f1734d9c2376c413dfa22d89f8
    Reviewed-on: https://gerrit.libreoffice.org/74630
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index bebbd4fafb9a..f47177c2bd5e 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -634,7 +634,7 @@ public:
 
     void                        Clear( bool bFromDestructor = false );
 
-    std::unique_ptr<ScFieldEditEngine> CreateFieldEditEngine();
+    std::unique_ptr<ScFieldEditEngine> CreateFieldEditEngine(bool bUpdateMode);
     void                        
DisposeFieldEditEngine(std::unique_ptr<ScFieldEditEngine>& rpEditEngine);
 
     /**
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 0a54f877c0b1..b4dfbfac64aa 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -363,9 +363,8 @@ long ScColumn::GetNeededSize(
         MapMode aHMMMode( MapUnit::Map100thMM, Point(), rZoomX, rZoomY );
 
         // save in document ?
-        std::unique_ptr<ScFieldEditEngine> pEngine = 
pDocument->CreateFieldEditEngine();
+        std::unique_ptr<ScFieldEditEngine> pEngine = 
pDocument->CreateFieldEditEngine(/*bUpdateMode*/false);
 
-        pEngine->SetUpdateMode( false );
         bool bTextWysiwyg = ( pDev->GetOutDevType() == OUTDEV_PRINTER );
         EEControlBits nCtrl = pEngine->GetControlWord();
         if ( bTextWysiwyg )
@@ -456,7 +455,6 @@ long ScColumn::GetNeededSize(
 
         bool bEngineVertical = pEngine->IsVertical();
         pEngine->SetVertical( bAsianVertical );
-        pEngine->SetUpdateMode( true );
 
         bool bEdWidth = bWidth;
         if ( eOrient != SvxCellOrientation::Standard && eOrient != 
SvxCellOrientation::Stacked )
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index b87d73a8da56..15d95a9f77b3 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -1091,7 +1091,7 @@ void ScDocument::SetChangeViewSettings(const 
ScChangeViewSettings& rNew)
     *pChangeViewSettings=rNew;
 }
 
-std::unique_ptr<ScFieldEditEngine> ScDocument::CreateFieldEditEngine()
+std::unique_ptr<ScFieldEditEngine> ScDocument::CreateFieldEditEngine(bool 
bUpdateMode)
 {
     std::unique_ptr<ScFieldEditEngine> pNewEditEngine;
     if (!pCacheFieldEditEngine)
@@ -1105,8 +1105,7 @@ std::unique_ptr<ScFieldEditEngine> 
ScDocument::CreateFieldEditEngine()
         {
             // #i66209# previous use might not have restored update mode,
             // ensure same state as for a new EditEngine (UpdateMode = true)
-            if ( !pCacheFieldEditEngine->GetUpdateMode() )
-                pCacheFieldEditEngine->SetUpdateMode(true);
+             pCacheFieldEditEngine->SetUpdateMode(bUpdateMode);
         }
 
         pNewEditEngine = std::move(pCacheFieldEditEngine);
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx 
b/sc/source/ui/Accessibility/AccessibleText.cxx
index acacc91ba421..c32edc078c31 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -1011,7 +1011,7 @@ SvxTextForwarder* 
ScAccessiblePreviewHeaderCellTextData::GetTextForwarder()
         if ( pDocShell )
         {
             ScDocument& rDoc = pDocShell->GetDocument();
-            pEditEngine = rDoc.CreateFieldEditEngine();
+            pEditEngine = rDoc.CreateFieldEditEngine(/*bUpdateMode*/true);
         }
         else
         {
@@ -1228,7 +1228,7 @@ SvxTextForwarder* 
ScAccessibleNoteTextData::GetTextForwarder()
         if ( mpDocSh )
         {
             ScDocument& rDoc = mpDocSh->GetDocument();
-            mpEditEngine = rDoc.CreateFieldEditEngine();
+            mpEditEngine = rDoc.CreateFieldEditEngine(/*bUpdateMode*/true);
         }
         else
         {
diff --git a/sc/source/ui/unoobj/textuno.cxx b/sc/source/ui/unoobj/textuno.cxx
index 252a0bfee513..86d304906672 100644
--- a/sc/source/ui/unoobj/textuno.cxx
+++ b/sc/source/ui/unoobj/textuno.cxx
@@ -812,7 +812,7 @@ SvxTextForwarder* ScCellTextData::GetTextForwarder()
         if ( pDocShell )
         {
             ScDocument& rDoc = pDocShell->GetDocument();
-            pEditEngine = rDoc.CreateFieldEditEngine();
+            pEditEngine = rDoc.CreateFieldEditEngine(/*bUpdateMode*/true);
         }
         else
         {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to