vcl/inc/impgraph.hxx | 1 vcl/source/gdi/impgraph.cxx | 62 +++++++++++++++++++------------------------- 2 files changed, 27 insertions(+), 36 deletions(-)
New commits: commit 78e74b0f9c1995a83aa52639e594112dc49b60a4 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Apr 22 19:21:22 2020 +0200 Commit: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> CommitDate: Wed Apr 22 19:21:22 2020 +0200 ImpGraphic: move content of swapOutToStream into swapOut Change-Id: Iec0227b1e1ceebda961e158315ea5e56c2d33204 diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx index fd9ae31d358c..47bc06d0ce6b 100644 --- a/vcl/inc/impgraph.hxx +++ b/vcl/inc/impgraph.hxx @@ -179,7 +179,6 @@ private: bool swapInFromStream(SvStream* pIStm); bool swapOut(); - bool swapOutToStream(SvStream* pOStm); bool isSwappedOut() const { return mbSwapOut;} diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 9c5325ac528c..ef63bb9e8cb2 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -1348,57 +1348,49 @@ bool ImpGraphic::swapOut() if (isSwappedOut()) return false; + // Create a temp filename for the swap file utl::TempFile aTempFile; const INetURLObject aTempFileURL(aTempFile.GetURL()); + // Create a swap file auto pSwapFile = std::make_shared<ImpSwapFile>(aTempFileURL, getOriginURL()); - std::unique_ptr<SvStream> xOutputStream = mpSwapFile->openOutputStream(); - - if (!xOutputStream) - return false; - - xOutputStream->SetVersion(SOFFICE_FILEFORMAT_50); - xOutputStream->SetCompressMode(SvStreamCompressFlags::NATIVE); - - bool bResult = swapOutToStream(xOutputStream.get()); - - xOutputStream.reset(); + bool bResult = false; - if (bResult) + // Open a stream to write the swap file to { - mpSwapFile = pSwapFile; - vcl::graphic::Manager::get().swappedOut(this); - } + std::unique_ptr<SvStream> xOutputStream = mpSwapFile->openOutputStream(); - return bResult; -} + if (!xOutputStream) + return false; -bool ImpGraphic::swapOutToStream(SvStream* xOStm) -{ - if( !xOStm ) - { - SAL_WARN("vcl.gdi", "Graphic SwapOut: No stream for swap out!"); - return false; - } - xOStm->SetBufferSize( GRAPHIC_STREAMBUFSIZE ); + // Write to stream + xOutputStream->SetVersion(SOFFICE_FILEFORMAT_50); + xOutputStream->SetCompressMode(SvStreamCompressFlags::NATIVE); + xOutputStream->SetBufferSize(GRAPHIC_STREAMBUFSIZE); - bool bRet = false; + if (!xOutputStream->GetError() && ImplWriteEmbedded(*xOutputStream)) + { + xOutputStream->Flush(); + bResult = !xOutputStream->GetError(); + } + } - if( !xOStm->GetError() && ImplWriteEmbedded( *xOStm ) ) + // Check if writing was successfull + if (bResult) { - xOStm->Flush(); + // We have swapped out, so can clean memory + mbSwapOut = true; + mpSwapFile = std::move(pSwapFile); + ImplCreateSwapInfo(); + ImplClearGraphics(); - if( !xOStm->GetError() ) - { - ImplCreateSwapInfo(); - ImplClearGraphics(); - bRet = mbSwapOut = true; - } + // Signal to manager that we have swapped out + vcl::graphic::Manager::get().swappedOut(this); } - return bRet; + return bResult; } bool ImpGraphic::ensureAvailable() const _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits