[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