[Libreoffice-commits] core.git: Branch 'private/kohei/xlsx-import-speedup' - 2 commits - sc/inc sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Fri Nov 8 16:28:56 CET 2013


 sc/inc/document.hxx                      |    7 ++-----
 sc/inc/externalrefmgr.hxx                |    6 ------
 sc/source/core/data/documen2.cxx         |    4 ++--
 sc/source/core/data/documen3.cxx         |   27 ++++++++-------------------
 sc/source/ui/docshell/externalrefmgr.cxx |   26 --------------------------
 5 files changed, 12 insertions(+), 58 deletions(-)

New commits:
commit d4e1ed6c75d5b28e729969c6d21f93ac82c1d7a8
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Nov 8 10:26:47 2013 -0500

    Remove mutexes from external ref manager.
    
    Change-Id: I4857bb3a1804d4cd53c3e25a7586bd68ab95a202

diff --git a/sc/inc/externalrefmgr.hxx b/sc/inc/externalrefmgr.hxx
index e7a5e79..c072cfd 100644
--- a/sc/inc/externalrefmgr.hxx
+++ b/sc/inc/externalrefmgr.hxx
@@ -768,12 +768,6 @@ private:
 private:
     ScDocument* mpDoc;
 
-    /** Mutex for accessing cached data and/or source document shells. */
-    mutable osl::Mutex maMtxCacheAccess;
-
-    /** Mutex for source document meta-data access. */
-    mutable osl::Mutex maMtxSrcFiles;
-
     /** cache of referenced ranges and names from source documents. */
     ScExternalRefCache maRefCache;
 
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index 9c07fd7..c06490e 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -1606,7 +1606,6 @@ void ScExternalRefManager::getAllCachedNumberFormats(vector<sal_uInt32>& rNumFmt
 
 sal_uInt16 ScExternalRefManager::getExternalFileCount() const
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
     return static_cast< sal_uInt16 >( maSrcFiles.size() );
 }
 
@@ -1759,8 +1758,6 @@ ScExternalRefCache::TokenRef ScExternalRefManager::getSingleRefToken(
     sal_uInt16 nFileId, const OUString& rTabName, const ScAddress& rCell,
     const ScAddress* pCurPos, SCTAB* pTab, ScExternalRefCache::CellFormat* pFmt)
 {
-    osl::MutexGuard aGuard(&maMtxCacheAccess);
-
     if (pCurPos)
         insertRefCell(nFileId, *pCurPos);
 
@@ -1853,8 +1850,6 @@ ScExternalRefCache::TokenRef ScExternalRefManager::getSingleRefToken(
 ScExternalRefCache::TokenArrayRef ScExternalRefManager::getDoubleRefTokens(
     sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange, const ScAddress* pCurPos)
 {
-    osl::MutexGuard aGuard(&maMtxCacheAccess);
-
     if (pCurPos)
         insertRefCell(nFileId, *pCurPos);
 
@@ -1901,8 +1896,6 @@ ScExternalRefCache::TokenArrayRef ScExternalRefManager::getDoubleRefTokens(
 ScExternalRefCache::TokenArrayRef ScExternalRefManager::getRangeNameTokens(
     sal_uInt16 nFileId, const OUString& rName, const ScAddress* pCurPos)
 {
-    osl::MutexGuard aGuard(&maMtxCacheAccess);
-
     if (pCurPos)
         insertRefCell(nFileId, *pCurPos);
 
@@ -1956,8 +1949,6 @@ bool hasRangeName(ScDocument& rDoc, const OUString& rName)
 
 bool ScExternalRefManager::isValidRangeName(sal_uInt16 nFileId, const OUString& rName)
 {
-    osl::MutexGuard aGuard(&maMtxCacheAccess);
-
     maybeLinkExternalFile(nFileId);
     ScDocument* pSrcDoc = getInMemorySrcDocument(nFileId);
     if (pSrcDoc)
@@ -2415,7 +2406,6 @@ void ScExternalRefManager::SrcFileData::maybeCreateRealFileName(const OUString&
 
 void ScExternalRefManager::maybeCreateRealFileName(sal_uInt16 nFileId)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
     if (nFileId >= maSrcFiles.size())
         return;
 
@@ -2460,8 +2450,6 @@ void ScExternalRefManager::convertToAbsName(OUString& rFile) const
 
 sal_uInt16 ScExternalRefManager::getExternalFileId(const OUString& rFile)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
-
     vector<SrcFileData>::const_iterator itrBeg = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
     vector<SrcFileData>::const_iterator itr = find_if(itrBeg, itrEnd, FindSrcFileByName(rFile));
     if (itr != itrEnd)
@@ -2478,8 +2466,6 @@ sal_uInt16 ScExternalRefManager::getExternalFileId(const OUString& rFile)
 
 const OUString* ScExternalRefManager::getExternalFileName(sal_uInt16 nFileId, bool bForceOriginal)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
-
     if (nFileId >= maSrcFiles.size())
         return NULL;
 
@@ -2496,14 +2482,11 @@ const OUString* ScExternalRefManager::getExternalFileName(sal_uInt16 nFileId, bo
 
 bool ScExternalRefManager::hasExternalFile(sal_uInt16 nFileId) const
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
     return nFileId < maSrcFiles.size();
 }
 
 bool ScExternalRefManager::hasExternalFile(const OUString& rFile) const
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
-
     vector<SrcFileData>::const_iterator itrBeg = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
     vector<SrcFileData>::const_iterator itr = find_if(itrBeg, itrEnd, FindSrcFileByName(rFile));
     return itr != itrEnd;
@@ -2602,8 +2585,6 @@ void ScExternalRefManager::breakLink(sal_uInt16 nFileId)
 
 void ScExternalRefManager::switchSrcFile(sal_uInt16 nFileId, const OUString& rNewFile, const OUString& rNewFilter)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
-
     maSrcFiles[nFileId].maFileName = rNewFile;
     maSrcFiles[nFileId].maRelativeName = OUString();
     maSrcFiles[nFileId].maRealFileName = OUString();
@@ -2618,8 +2599,6 @@ void ScExternalRefManager::switchSrcFile(sal_uInt16 nFileId, const OUString& rNe
 
 void ScExternalRefManager::setRelativeFileName(sal_uInt16 nFileId, const OUString& rRelUrl)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
-
     if (nFileId >= maSrcFiles.size())
         return;
     maSrcFiles[nFileId].maRelativeName = rRelUrl;
@@ -2627,8 +2606,6 @@ void ScExternalRefManager::setRelativeFileName(sal_uInt16 nFileId, const OUStrin
 
 void ScExternalRefManager::setFilterData(sal_uInt16 nFileId, const OUString& rFilterName, const OUString& rOptions)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
-
     if (nFileId >= maSrcFiles.size())
         return;
     maSrcFiles[nFileId].maFilterName = rFilterName;
@@ -2647,13 +2624,11 @@ void ScExternalRefManager::clear()
 
 bool ScExternalRefManager::hasExternalData() const
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
     return !maSrcFiles.empty();
 }
 
 void ScExternalRefManager::resetSrcFileData(const OUString& rBaseFileUrl)
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
     for (vector<SrcFileData>::iterator itr = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
           itr != itrEnd; ++itr)
     {
@@ -2669,7 +2644,6 @@ void ScExternalRefManager::resetSrcFileData(const OUString& rBaseFileUrl)
 
 void ScExternalRefManager::updateAbsAfterLoad()
 {
-    osl::MutexGuard aGuard(&maMtxSrcFiles);
     OUString aOwn( getOwnDocumentName() );
     for (vector<SrcFileData>::iterator itr = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
           itr != itrEnd; ++itr)
commit 55877708d9569789c394a9e28bac7a93d1137697
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Nov 8 10:06:51 2013 -0500

    Revert "Guard access to external ref manager instance."
    
    This reverts commit 7cf9ea71ad1364d00eaca95b309cc6c0f35cf6cb.

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 08ba3a2..09f1466 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -39,7 +39,6 @@
 #include "calcmacros.hxx"
 #include <tools/fract.hxx>
 #include <tools/gen.hxx>
-#include "osl/mutex.hxx"
 
 #include <memory>
 #include <map>
@@ -299,9 +298,7 @@ private:
     ::std::auto_ptr<ScDocProtection> pDocProtection;
     ::std::auto_ptr<ScClipParam>     mpClipParam;
 
-    boost::scoped_ptr<ScExternalRefManager> mpExternalRefMgr;
-    mutable osl::Mutex maMtxExternalRefMgr;
-
+    ::std::auto_ptr<ScExternalRefManager> pExternalRefMgr;
     ::std::auto_ptr<ScMacroManager> mpMacroMgr;
 
 
@@ -664,7 +661,7 @@ public:
                                     const OUString& aFileName,
                                     const OUString& aTabName );
 
-    SC_DLLPUBLIC bool HasExternalRefManager() const;
+    bool            HasExternalRefManager() const { return pExternalRefMgr.get(); }
     SC_DLLPUBLIC ScExternalRefManager* GetExternalRefManager() const;
     bool            IsInExternalReferenceMarking() const;
     void            MarkUsedExternalReferences();
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index 846b5c8..23a4bcf 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -150,7 +150,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, SfxObjectShell* pDocShell ) :
         pCacheFieldEditEngine( NULL ),
         pDocProtection( NULL ),
         mpClipParam( NULL),
-        mpExternalRefMgr( NULL ),
+        pExternalRefMgr( NULL ),
         mpMacroMgr( NULL ),
         pViewOptions( NULL ),
         pDocOptions( NULL ),
@@ -384,7 +384,7 @@ ScDocument::~ScDocument()
     mxFormulaParserPool.reset();
     // Destroy the external ref mgr instance here because it has a timer
     // which needs to be stopped before the app closes.
-    mpExternalRefMgr.reset();
+    pExternalRefMgr.reset();
 
     ScAddInAsync::RemoveDocument( this );
     ScAddInListener::RemoveDocument( this );
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index 67fda15..73f8d71 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -582,41 +582,30 @@ bool ScDocument::LinkExternalTab( SCTAB& rTab, const OUString& aDocTab,
     return true;
 }
 
-bool ScDocument::HasExternalRefManager() const
-{
-    osl::MutexGuard aGuard(&maMtxExternalRefMgr);
-    return mpExternalRefMgr.get();
-}
-
 ScExternalRefManager* ScDocument::GetExternalRefManager() const
 {
-    osl::MutexGuard aGuard(&maMtxExternalRefMgr);
-
     ScDocument* pThis = const_cast<ScDocument*>(this);
-    if (!mpExternalRefMgr.get())
-        pThis->mpExternalRefMgr.reset( new ScExternalRefManager( pThis));
+    if (!pExternalRefMgr.get())
+        pThis->pExternalRefMgr.reset( new ScExternalRefManager( pThis));
 
-    return mpExternalRefMgr.get();
+    return pExternalRefMgr.get();
 }
 
 bool ScDocument::IsInExternalReferenceMarking() const
 {
-    osl::MutexGuard aGuard(&maMtxExternalRefMgr);
-    return mpExternalRefMgr.get() && mpExternalRefMgr->isInReferenceMarking();
+    return pExternalRefMgr.get() && pExternalRefMgr->isInReferenceMarking();
 }
 
 void ScDocument::MarkUsedExternalReferences()
 {
-    osl::MutexGuard aGuard(&maMtxExternalRefMgr);
-
-    if (!mpExternalRefMgr.get())
+    if (!pExternalRefMgr.get())
         return;
-    if (!mpExternalRefMgr->hasExternalData())
+    if (!pExternalRefMgr->hasExternalData())
         return;
     // Charts.
-    mpExternalRefMgr->markUsedByLinkListeners();
+    pExternalRefMgr->markUsedByLinkListeners();
     // Formula cells.
-    mpExternalRefMgr->markUsedExternalRefCells();
+    pExternalRefMgr->markUsedExternalRefCells();
 
     /* NOTE: Conditional formats and validation objects are marked when
      * collecting them during export. */


More information about the Libreoffice-commits mailing list