diff options
author | Aron Budea <baron@caesar.elte.hu> | 2016-08-28 18:42:31 +0200 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2016-09-05 16:29:56 +0000 |
commit | fdc867a4bc6ac2810732af898c620a889cde725c (patch) | |
tree | edc814a2367ffbecf31db5d0df4f42a98a3bd714 /svtools | |
parent | 67ef208b2b586603e205105a384231645d7f6712 (diff) |
tdf#100442 use unordered_set for GraphicManager's maObjList
Speeds up ImplCheckSizeOfSwappedInGraphics.
maObjList didn't seem to depend on it being a vector.
Change-Id: I0028186b5c4f53ae198b9b33a31c51f0b2e5eb45
Reviewed-on: https://gerrit.libreoffice.org/28439
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/graphic/grfcache.cxx | 4 | ||||
-rw-r--r-- | svtools/source/graphic/grfmgr2.cxx | 20 |
2 files changed, 10 insertions, 14 deletions
diff --git a/svtools/source/graphic/grfcache.cxx b/svtools/source/graphic/grfcache.cxx index 5d2bf627811c..4669f218fa65 100644 --- a/svtools/source/graphic/grfcache.cxx +++ b/svtools/source/graphic/grfcache.cxx @@ -146,7 +146,7 @@ class GraphicCacheEntry { private: - GraphicObjectList_impl maGraphicObjectList; + std::vector< GraphicObject* > maGraphicObjectList; GraphicID maID; GfxLink maGfxLink; @@ -336,7 +336,7 @@ void GraphicCacheEntry::AddGraphicObjectReference( const GraphicObject& rObj, Gr bool GraphicCacheEntry::ReleaseGraphicObjectReference( const GraphicObject& rObj ) { for( - GraphicObjectList_impl::iterator it = maGraphicObjectList.begin(); + auto it = maGraphicObjectList.begin(); it != maGraphicObjectList.end(); ++it ) { diff --git a/svtools/source/graphic/grfmgr2.cxx b/svtools/source/graphic/grfmgr2.cxx index 03ca1a5a5285..645588499b09 100644 --- a/svtools/source/graphic/grfmgr2.cxx +++ b/svtools/source/graphic/grfmgr2.cxx @@ -141,10 +141,10 @@ bool GraphicManager::DrawObj( OutputDevice* pOut, const Point& rPt, const Size& void GraphicManager::ImplRegisterObj( const GraphicObject& rObj, Graphic& rSubstitute, const OString* pID, const GraphicObject* pCopyObj ) { - assert(std::find(maObjList.begin(), maObjList.end(), - const_cast<GraphicObject*>(&rObj)) == maObjList.end()); + assert(maObjList.find(const_cast<GraphicObject*>(&rObj)) == maObjList.end()); + + maObjList.emplace( const_cast<GraphicObject*>(&rObj) ); - maObjList.push_back( const_cast<GraphicObject*>(&rObj) ); mpCache->AddGraphicObject( rObj, rSubstitute, pID, pCopyObj ); if( !rObj.IsSwappedOut() ) mnUsedSize += rObj.maGraphic.GetSizeBytes(); @@ -158,13 +158,9 @@ void GraphicManager::ImplUnregisterObj( const GraphicObject& rObj ) assert(mnUsedSize >= rObj.maGraphic.GetSizeBytes()); mnUsedSize -= rObj.maGraphic.GetSizeBytes(); } - for( GraphicObjectList_impl::iterator it = maObjList.begin(); it != maObjList.end(); ++it ) - { - if ( *it == &rObj ) { - maObjList.erase( it ); - return; - } - } + if ( 0 < maObjList.erase( const_cast<GraphicObject*>(&rObj) ) ) + return; + assert(false); // surely it should have been registered? } @@ -203,7 +199,7 @@ void GraphicManager::ImplCheckSizeOfSwappedInGraphics(const GraphicObject* pGrap std::vector< GraphicObject* > aCandidates(maObjList.begin(), maObjList.end()); // if we use more currently, sort by last DataChangeTimeStamp // sort by DataChangeTimeStamp so that the oldest get removed first - ::std::sort(aCandidates.begin(), aCandidates.end(), simpleSortByDataChangeTimeStamp()); + std::sort(aCandidates.begin(), aCandidates.end(), simpleSortByDataChangeTimeStamp()); for(sal_uInt32 a(0); mnUsedSize >= nMaxCacheSize && a < aCandidates.size(); a++) { @@ -214,7 +210,7 @@ void GraphicManager::ImplCheckSizeOfSwappedInGraphics(const GraphicObject* pGrap { continue; } - if (std::find(maObjList.begin(), maObjList.end(), pObj) == maObjList.end()) + if (maObjList.find(pObj) == maObjList.end()) { // object has been deleted when swapping out another one continue; |