include/svtools/grfmgr.hxx | 2 +- include/vcl/graph.hxx | 3 +++ oox/source/export/drawingml.cxx | 13 ------------- svtools/source/graphic/grfmgr.cxx | 20 +++----------------- svtools/source/graphic/grfmgr2.cxx | 2 +- sw/inc/ndole.hxx | 1 - sw/source/core/graphic/ndgrf.cxx | 16 +++++++--------- sw/source/core/ole/ndole.cxx | 5 +---- sw/source/filter/ww8/docxattributeoutput.cxx | 5 ----- vcl/source/gdi/cvtgrf.cxx | 2 -- 10 files changed, 16 insertions(+), 53 deletions(-)
New commits: commit 31c848450f4afa52fae39546d8f37763208cf384 Author: Zolnai Tamás <[email protected]> Date: Sat Nov 1 01:08:49 2014 +0100 Why to have this compromise, do that what we say the users we do. Change-Id: Ia599644ff1f7591ac84bdca988883eaf5860297e diff --git a/svtools/source/graphic/grfmgr.cxx b/svtools/source/graphic/grfmgr.cxx index 588e521..a524c00 100644 --- a/svtools/source/graphic/grfmgr.cxx +++ b/svtools/source/graphic/grfmgr.cxx @@ -441,25 +441,13 @@ void GraphicObject::SetSwapStreamHdl() } } -// #i122985# it is not correct to set the swap-timeout to a hard-coded 5000ms -// as it was before. Added code and experimented what to do as a good -// compromise, see description. static sal_uInt32 GetCacheTimeInMs() { const sal_uInt32 nSeconds = officecfg::Office::Common::Cache::GraphicManager::ObjectReleaseTime::get( comphelper::getProcessComponentContext()); - - // The default is 10 minutes. The minimum is one minute, thus 60 - // seconds. When the minimum should match to the former hard-coded - // 5 seconds, we have a divisor of 12 to use. For the default of 10 - // minutes this would mean 50 seconds. Compared to before this is - // ten times more (would allow better navigation by switching - // through pages) and is controllable by the user by setting the - // tools/options/memory/Remove_from_memory_after setting. Seems to - // be a good compromise to me. - return nSeconds * 1000 / 12; + return nSeconds * 1000; } void GraphicObject::SetSwapStreamHdl(const Link& rHdl) commit 3f6f23a06fe9a95ec74593057dd3473f2a912c6b Author: Zolnai Tamás <[email protected]> Date: Sat Nov 1 01:07:48 2014 +0100 Swaping Graphic is a privilage of GraphicObject. This means more things: * Graphic won't swap out itself, so those classes which uses Graphic without GraphicObject won't need to deal with swapping. * When a Graphic is queried from GraphicObject the caller won't need to deal with swapping, because GraphicObject swaps it in before return. * GraphicObject will swap in the Graphic always when a swapping dependent data is queried (e.g. whole graphic, transformed graphic or AnimationNotifyHdl) Change-Id: I2bf6e37291ec94146f10aac4a35084682437ed16 diff --git a/include/svtools/grfmgr.hxx b/include/svtools/grfmgr.hxx index d9c1954..d515773 100644 --- a/include/svtools/grfmgr.hxx +++ b/include/svtools/grfmgr.hxx @@ -412,7 +412,7 @@ public: bool IsAnimated() const { return mbAnimated; } bool IsEPS() const { return mbEPS; } - Link GetAnimationNotifyHdl() const { return maGraphic.GetAnimationNotifyHdl(); } + Link GetAnimationNotifyHdl() const { return GetGraphic().GetAnimationNotifyHdl(); } bool SwapOut(); bool SwapOut( SvStream* pOStm ); diff --git a/include/vcl/graph.hxx b/include/vcl/graph.hxx index b55e7901..8727b9c 100644 --- a/include/vcl/graph.hxx +++ b/include/vcl/graph.hxx @@ -176,6 +176,8 @@ public: const OUString& GetDocFileName() const; sal_uLong GetDocFilePos() const; +private: + friend class GraphicObject; bool SwapOut(); void SwapOutAsLink(); bool SwapOut( SvStream* pOStm ); @@ -183,6 +185,7 @@ public: bool SwapIn( SvStream* pIStm ); bool IsSwapOut() const; +public: void SetLink( const GfxLink& ); GfxLink GetLink() const; bool IsLink() const; diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 3c38c4d..5ca7c83 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -866,19 +866,6 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic , bool bRelPathToMedia ) GraphicType aType = rGraphic.GetType(); if ( aType == GRAPHIC_BITMAP || aType == GRAPHIC_GDIMETAFILE) { - bool bSwapped = rGraphic.IsSwapOut(); - - //Warn rather than just happily swap in because of the comments - //in the sw export filters about needing to go through the - //hairy SwGrfNode::SwapIn which we would subvert by swapping in - //without it knowing about it, so while those ones are fixed we - //probably have to assume that we should ideally be presented - //here with already swapped in graphics. - SAL_WARN_IF(bSwapped, "oox", "attempted to output swapped out graphic"); - - if (bSwapped) - const_cast<Graphic&>(rGraphic).SwapIn(); - if ( aType == GRAPHIC_BITMAP ) { GraphicConverter::Export( aStream, rGraphic, CVT_PNG ); diff --git a/svtools/source/graphic/grfmgr.cxx b/svtools/source/graphic/grfmgr.cxx index 64f2b10..588e521 100644 --- a/svtools/source/graphic/grfmgr.cxx +++ b/svtools/source/graphic/grfmgr.cxx @@ -694,9 +694,7 @@ void GraphicObject::StopAnimation( OutputDevice* pOut, long nExtraData ) const Graphic& GraphicObject::GetGraphic() const { GraphicObject *pThis = const_cast<GraphicObject*>(this); - - if (mbAutoSwapped) - pThis->ImplAutoSwapIn(); + pThis->SwapIn(); //fdo#50697 If we've been asked to provide the graphic, then reset //the cache timeout to start from now and not remain at the @@ -736,7 +734,7 @@ void GraphicObject::SetGraphic( const Graphic& rGraphic, const OUString& rLink ) Graphic GraphicObject::GetTransformedGraphic( const Size& rDestSize, const MapMode& rDestMap, const GraphicAttr& rAttr ) const { // #104550# Extracted from svx/source/svdraw/svdograf.cxx - Graphic aTransGraphic( maGraphic ); + Graphic aTransGraphic( GetGraphic() ); const GraphicType eType = GetType(); const Size aSrcSize( aTransGraphic.GetPrefSize() ); diff --git a/svtools/source/graphic/grfmgr2.cxx b/svtools/source/graphic/grfmgr2.cxx index 7f93bf9..d054ab3 100644 --- a/svtools/source/graphic/grfmgr2.cxx +++ b/svtools/source/graphic/grfmgr2.cxx @@ -279,7 +279,7 @@ bool GraphicManager::ImplDraw( OutputDevice* pOut, const Point& rPt, const Graphic& rGraphic = rObj.GetGraphic(); bool bRet = false; - if( rGraphic.IsSupportedGraphic() && !rGraphic.IsSwapOut() ) + if( rGraphic.IsSupportedGraphic() && !rObj.IsSwappedOut() ) { if( GRAPHIC_BITMAP == rGraphic.GetType() ) { diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 720f9a0..53c9e01 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4128,11 +4128,6 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size // Not in cache, then need to write it. m_rDrawingML.SetFS( m_pSerializer ); // to be sure that we write to the right stream - if (pGraphic->IsSwapOut() && !pGrfNode) - { - const_cast<Graphic*>(pGraphic)->SwapIn(); - } - OUString aImageId = m_rDrawingML.WriteImage( *pGraphic ); aRelId = OUStringToOString( aImageId, RTL_TEXTENCODING_UTF8 ); diff --git a/vcl/source/gdi/cvtgrf.cxx b/vcl/source/gdi/cvtgrf.cxx index 68e4e07..65cc919 100644 --- a/vcl/source/gdi/cvtgrf.cxx +++ b/vcl/source/gdi/cvtgrf.cxx @@ -56,8 +56,6 @@ sal_uLong GraphicConverter::Import( SvStream& rIStm, Graphic& rGraphic, sal_uLon sal_uLong GraphicConverter::Export( SvStream& rOStm, const Graphic& rGraphic, sal_uLong nFormat ) { - SAL_WARN_IF(rGraphic.IsSwapOut(), "vcl.filter", "exporting a swapped out graphic!"); - GraphicConverter* pCvt = ImplGetSVData()->maGDIData.mpGrfConverter; sal_uLong nRet = ERRCODE_IO_GENERAL; commit 3ba3092d13442bc91c746bdb9e8b3efa612c027b Author: Zolnai Tamás <[email protected]> Date: Fri Oct 31 18:27:30 2014 +0100 Remove unused Graphic member of SwOLENode Change-Id: Iaff7e86a8e11e9befc6feacdafd3a78a1971bbcd diff --git a/sw/inc/ndole.hxx b/sw/inc/ndole.hxx index a3622e1..65189ee 100644 --- a/sw/inc/ndole.hxx +++ b/sw/inc/ndole.hxx @@ -71,7 +71,6 @@ class SW_DLLPUBLIC SwOLENode: public SwNoTxtNode { friend class SwNodes; mutable SwOLEObj aOLEObj; - Graphic* pGraphic; OUString sChartTblName; ///< with chart objects: name of referenced table. bool bOLESizeInvalid; /**< Should be considered at SwDoc::PrtOLENotify (e.g. copied). Is not persistent. */ diff --git a/sw/source/core/ole/ndole.cxx b/sw/source/core/ole/ndole.cxx index 35df868..3963946 100644 --- a/sw/source/core/ole/ndole.cxx +++ b/sw/source/core/ole/ndole.cxx @@ -211,7 +211,6 @@ SwOLENode::SwOLENode( const SwNodeIndex &rWhere, SwAttrSet* pAutoAttr ) : SwNoTxtNode( rWhere, ND_OLENODE, pGrfColl, pAutoAttr ), aOLEObj( xObj ), - pGraphic(0), bOLESizeInvalid( false ), mpObjectLink( NULL ) { @@ -225,7 +224,6 @@ SwOLENode::SwOLENode( const SwNodeIndex &rWhere, SwAttrSet* pAutoAttr ) : SwNoTxtNode( rWhere, ND_OLENODE, pGrfColl, pAutoAttr ), aOLEObj( rString, nAspect ), - pGraphic(0), bOLESizeInvalid( false ), mpObjectLink( NULL ) { @@ -235,14 +233,13 @@ SwOLENode::SwOLENode( const SwNodeIndex &rWhere, SwOLENode::~SwOLENode() { DisconnectFileLink_Impl(); - delete pGraphic; } const Graphic* SwOLENode::GetGraphic() { if ( aOLEObj.GetOleRef().is() ) return aOLEObj.xOLERef.GetGraphic(); - return pGraphic; + return 0; } SwCntntNode *SwOLENode::SplitCntntNode( const SwPosition & ) commit fa14d751d9a7723265eb5fee1c7dee3e94563207 Author: Zolnai Tamás <[email protected]> Date: Fri Oct 31 18:20:51 2014 +0100 Avoid a potential image loss in SwGrfNode::SwapOut() method. It's better to be explicit when to swap out as a link. Before if an embedded image swap out failed (e.g. i/o error) than swap out it as a link could lead to image loss. Change-Id: I70dd00d5f82c5f4f622805e1d6ee1dfc30900b31 diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx index 3cd7ef9..bb7a9081 100644 --- a/sw/source/core/graphic/ndgrf.cxx +++ b/sw/source/core/graphic/ndgrf.cxx @@ -620,17 +620,15 @@ bool SwGrfNode::SwapOut() maGrfObj.GetType() != GRAPHIC_NONE && !maGrfObj.IsSwappedOut() && !bInSwapIn ) { - if( !refLink.Is() ) + if( refLink.Is() || HasEmbeddedStreamName() ) { - // Swapping is only needed for embedded pictures. - // The graphic will be written into a temp file if it is new, i.e. - // if there is no stream name in the storage yet - if( !HasEmbeddedStreamName() ) - if( !maGrfObj.SwapOut() ) - return false; + // written graphics and links are removed here + return maGrfObj.SwapOut( GRFMGR_AUTOSWAPSTREAM_LINK ); } - // written graphics and links are removed here - return maGrfObj.SwapOut( GRFMGR_AUTOSWAPSTREAM_LINK ); + { + return maGrfObj.SwapOut(); + } + } return true; }
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
