comphelper/source/container/embeddedobjectcontainer.cxx | 24 +++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)
New commits: commit dbec45e8136a6de7968d93b2fc891d7409133b13 Author: Andre Fischer <[email protected]> Date: Mon Jul 9 14:39:47 2012 +0000 Resolves: #i120168# Do not call storeOwn() when not necessary Patch by: lizh.fee Review by: Andre Fischer (cherry picked from commit 822661c165198467b56fa2a1034ddc002ba99f7e) Change-Id: Ibb8e39b98360ef918890a627449c654e311f0f21 diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx b/comphelper/source/container/embeddedobjectcontainer.cxx index 870eb28..6acf6d8 100644 --- a/comphelper/source/container/embeddedobjectcontainer.cxx +++ b/comphelper/source/container/embeddedobjectcontainer.cxx @@ -1508,7 +1508,29 @@ sal_Bool EmbeddedObjectContainer::StoreChildren(sal_Bool _bOasisFormat,sal_Bool try { //TODO/LATER: only storing if changed! - xPersist->storeOwn(); + //xPersist->storeOwn(); //commented, i120168 + + // begin:all charts will be persited as xml format on disk when saving, which is time consuming. + // '_bObjectsOnly' mean we are storing to alien formats. + // 'isStorageElement' mean current object is NOT an MS OLE format. (may also include in future), i120168 + if (_bObjectsOnly && (nCurState == embed::EmbedStates::LOADED || nCurState == embed::EmbedStates::RUNNING) + && (pImpl->mxStorage->isStorageElement( *pIter ) )) + { + uno::Reference< util::XModifiable > xModifiable( xObj->getComponent(), uno::UNO_QUERY ); + if ( xModifiable.is() && xModifiable->isModified()) + { + xPersist->storeOwn(); + } + else + { + //do nothing.embeded model is not modified, no need to persist. + } + } + else //the embeded object is in active status, always store back it. + { + xPersist->storeOwn(); + } + //end i120168 } catch (const uno::Exception&) { _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
