From e824a49a1c12533047d6a5ab8544377e8ff29863 Mon Sep 17 00:00:00 2001 From: Jan-Marek Glogowski Date: Thu, 24 Aug 2017 18:54:21 +0200 Subject: Don't run the OLEObjCache timer for an empty cache Change-Id: I210f6bdec14491bea6d15bca133011059091f21b --- svx/source/svdraw/svdetc.cxx | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'svx/source/svdraw/svdetc.cxx') diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx index 7ea0e0b686ba..89c17590984c 100644 --- a/svx/source/svdraw/svdetc.cxx +++ b/svx/source/svdraw/svdetc.cxx @@ -112,8 +112,6 @@ OLEObjCache::OLEObjCache() pTimer = new AutoTimer( "svx OLEObjCache pTimer UnloadCheck" ); pTimer->SetInvokeHandler( LINK(this, OLEObjCache, UnloadCheckHdl) ); pTimer->SetTimeout(20000); - pTimer->Invoke(); - pTimer->Start(); } OLEObjCache::~OLEObjCache() @@ -122,7 +120,7 @@ OLEObjCache::~OLEObjCache() delete pTimer; } -void OLEObjCache::UnloadOnDemand() +IMPL_LINK_NOARG(OLEObjCache, UnloadCheckHdl, Timer*, void) { if (nSize >= maObjs.size()) return; @@ -190,11 +188,12 @@ void OLEObjCache::InsertObj(SdrOle2Obj* pObj) // insert object into first position maObjs.insert(maObjs.begin(), pObj); - if ( !bFound ) - { - // a new object was inserted, recalculate the cache - UnloadOnDemand(); - } + // if a new object was inserted, recalculate the cache + if (!bFound) + pTimer->Invoke(); + + if (!bFound || !pTimer->IsActive()) + pTimer->Start(); } void OLEObjCache::RemoveObj(SdrOle2Obj* pObj) @@ -202,6 +201,8 @@ void OLEObjCache::RemoveObj(SdrOle2Obj* pObj) std::vector::iterator it = std::find(maObjs.begin(), maObjs.end(), pObj); if (it != maObjs.end()) maObjs.erase(it); + if (maObjs.empty()) + pTimer->Stop(); } size_t OLEObjCache::size() const @@ -243,12 +244,6 @@ bool OLEObjCache::UnloadObj(SdrOle2Obj* pObj) return bUnloaded; } -IMPL_LINK_NOARG(OLEObjCache, UnloadCheckHdl, Timer*, void) -{ - UnloadOnDemand(); -} - - bool GetDraftFillColor(const SfxItemSet& rSet, Color& rCol) { drawing::FillStyle eFill=static_cast(rSet.Get(XATTR_FILLSTYLE)).GetValue(); -- cgit