summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2017-08-24 18:54:21 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2017-09-06 14:40:07 +0200
commite824a49a1c12533047d6a5ab8544377e8ff29863 (patch)
tree11186a5286dbb6812e0bf98e37cb6e9e35520c15 /svx
parent9ac2aad4c1cd0f8d513c02a897da90c42f2fa961 (diff)
Don't run the OLEObjCache timer for an empty cache
Change-Id: I210f6bdec14491bea6d15bca133011059091f21b
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svdetc.cxx23
1 files changed, 9 insertions, 14 deletions
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<SdrOle2Obj*>::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<const XFillStyleItem&>(rSet.Get(XATTR_FILLSTYLE)).GetValue();