diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-07-09 21:46:34 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-07-09 22:12:57 -0400 |
commit | 55612305b645a1c0872373c0a9f434763708732a (patch) | |
tree | 78516211ddf364175cfae990670423ab2599e63c /svx | |
parent | 8b568c19a68d080685cf5a429dbe08263e8e6cee (diff) |
bnc#883684: Make chart objects exempt from automatic unloading.
The Memory option page contains "Number of objects" setting which controls
how many OLE objects can be loaded at any given time. When the number of
total OLE objects exceeds this number the oldest ones get unloaded. Note
that the total number is across all open documents, not per document.
Technically, chart objects are OLE objects, but unlike other OLE objects
that are embedded Calc, Writer, Draw documents, chart objects normally
"belong" to the host document. It therefore makes no sense to subject
chart objects to this automatic unloading.
In the future we may want to apply this exemption to other types of OLE
objects, like formula objects for example.. Or maybe this setting can be
removed altogether...
(cherry picked from commit b023565d4f064cd0312e8c1fcc23a9f552112935)
Conflicts:
include/svx/svdoole2.hxx
svx/source/svdraw/svdetc.cxx
svx/source/svdraw/svdoole2.cxx
Change-Id: I7dd92550880efb4db8fc843cf1c915c712166da4
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/svdetc.cxx | 4 | ||||
-rw-r--r-- | svx/source/svdraw/svdoole2.cxx | 8 |
2 files changed, 11 insertions, 1 deletions
diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx index 4caca9417a72..afcc792aa992 100644 --- a/svx/source/svdraw/svdetc.cxx +++ b/svx/source/svdraw/svdetc.cxx @@ -165,6 +165,10 @@ void OLEObjCache::UnloadOnDemand() void OLEObjCache::InsertObj(SdrOle2Obj* pObj) { + if (!pObj->IsUnloadable()) + // This OLE object is exempt from automatic unloading. + return; + if ( !empty() ) { SdrOle2Obj* pExistingObj = front(); diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx index a0f0c33da7d2..4a7ecf00303e 100644 --- a/svx/source/svdraw/svdoole2.cxx +++ b/svx/source/svdraw/svdoole2.cxx @@ -2171,7 +2171,13 @@ sal_Bool SdrOle2Obj::IsCalc() const return sal_False; } -// ----------------------------------------------------------------------------- +bool SdrOle2Obj::IsUnloadable() const +{ + // Right now, chart OLE objects are the only ones exempt from automatic + // unloading. + return !IsChart(); +} + uno::Reference< frame::XModel > SdrOle2Obj::GetParentXModel() const { uno::Reference< frame::XModel > xDoc; |