[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - include/svx svx/source

Kohei Yoshida kohei.yoshida at collabora.com
Wed Jul 9 22:05:08 PDT 2014


 include/svx/svdoole2.hxx       |    7 +++++++
 svx/source/svdraw/svdetc.cxx   |    4 ++++
 svx/source/svdraw/svdoole2.cxx |    6 ++++++
 3 files changed, 17 insertions(+)

New commits:
commit 2ced18a6e90e3c9494e48994af39c5d710188c44
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Jul 9 21:46:34 2014 -0400

    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:
    	svx/source/svdraw/svdetc.cxx
    
    Change-Id: I7dd92550880efb4db8fc843cf1c915c712166da4
    Reviewed-on: https://gerrit.libreoffice.org/10179
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/include/svx/svdoole2.hxx b/include/svx/svdoole2.hxx
index 68ad43e..21d3b56 100644
--- a/include/svx/svdoole2.hxx
+++ b/include/svx/svdoole2.hxx
@@ -171,6 +171,13 @@ public:
     bool IsChart() const;
     bool IsCalc() const;
 
+    /**
+     * Unloadable OLE objects are subject to automatic unloading per memory
+     * setting.  The "Number of objects" setting in the Memory option controls
+     * how many OLE objects can be loaded at any given moment.
+     */
+    bool IsUnloadable() const;
+
     bool UpdateLinkURL_Impl();
     void BreakFileLink_Impl();
     void DisconnectFileLink_Impl();
diff --git a/svx/source/svdraw/svdetc.cxx b/svx/source/svdraw/svdetc.cxx
index a9cb949..3214a32 100644
--- a/svx/source/svdraw/svdetc.cxx
+++ b/svx/source/svdraw/svdetc.cxx
@@ -166,6 +166,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 86379ce..889f3ed 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -2162,6 +2162,12 @@ bool SdrOle2Obj::IsCalc() const
     return 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
 {


More information about the Libreoffice-commits mailing list