sc/source/filter/inc/xcl97esc.hxx | 2 +- sc/source/filter/xcl97/xcl97esc.cxx | 11 ++++------- sc/source/ui/app/drwtrans.cxx | 15 ++++++--------- sc/source/ui/app/transobj.cxx | 13 +++++-------- 4 files changed, 16 insertions(+), 25 deletions(-)
New commits: commit 3e095961add3705b788b017ea63585937a9fd7d3 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sun Sep 18 17:47:45 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Sep 20 08:07:35 2022 +0200 simplify usage of TempFile in sc TempFile already handles the stream. And not touching the URL means we stay on the fast path for temp files. Change-Id: Icab41d12ab7846b8901a92c11fee05952b98fafc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140201 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/source/filter/inc/xcl97esc.hxx b/sc/source/filter/inc/xcl97esc.hxx index 6ae5c8762d46..00012c8a95f0 100644 --- a/sc/source/filter/inc/xcl97esc.hxx +++ b/sc/source/filter/inc/xcl97esc.hxx @@ -38,7 +38,7 @@ private: private: ::std::unique_ptr< ::utl::TempFile > mxPicTempFile; - ::std::unique_ptr< SvStream > mxPicStrm; + SvStream* mpPicStrm; }; class XclObj; diff --git a/sc/source/filter/xcl97/xcl97esc.cxx b/sc/source/filter/xcl97/xcl97esc.cxx index 1ecb0891dc20..168a3ba50897 100644 --- a/sc/source/filter/xcl97/xcl97esc.cxx +++ b/sc/source/filter/xcl97/xcl97esc.cxx @@ -75,13 +75,10 @@ XclEscherExGlobal::XclEscherExGlobal( const XclExpRoot& rRoot ) : SvStream* XclEscherExGlobal::ImplQueryPictureStream() { mxPicTempFile.reset( new ::utl::TempFile ); - if( mxPicTempFile->IsValid() ) - { - mxPicTempFile->EnableKillingFile(); - mxPicStrm = ::utl::UcbStreamHelper::CreateStream( mxPicTempFile->GetURL(), StreamMode::STD_READWRITE ); - mxPicStrm->SetEndian( SvStreamEndian::LITTLE ); - } - return mxPicStrm.get(); + mxPicTempFile->EnableKillingFile(); + mpPicStrm = mxPicTempFile->GetStream( StreamMode::READWRITE ); + mpPicStrm->SetEndian( SvStreamEndian::LITTLE ); + return mpPicStrm; } XclEscherEx::XclEscherEx( const XclExpRoot& rRoot, XclExpObjectManager& rObjMgr, SvStream& rStrm, const XclEscherEx* pParent ) : diff --git a/sc/source/ui/app/drwtrans.cxx b/sc/source/ui/app/drwtrans.cxx index 5c4d5ef811dd..2548c28be687 100644 --- a/sc/source/ui/app/drwtrans.cxx +++ b/sc/source/ui/app/drwtrans.cxx @@ -472,8 +472,9 @@ bool ScDrawTransferObj::WriteObject( tools::SvRef<SotTempStream>& rxOStm, void* ::utl::TempFile aTempFile; aTempFile.EnableKillingFile(); + SvStream* pTempStream = aTempFile.GetStream(StreamMode::READWRITE); uno::Reference< embed::XStorage > xWorkStore = - ::comphelper::OStorageHelper::GetStorageFromURL( aTempFile.GetURL(), embed::ElementModes::READWRITE ); + ::comphelper::OStorageHelper::GetStorageFromStream( new utl::OStreamWrapper(*pTempStream) ); uno::Reference < embed::XEmbedPersist > xPers( static_cast<embed::XVisualObject*>(pEmbObj), uno::UNO_QUERY ); if ( xPers.is() ) @@ -516,8 +517,9 @@ bool ScDrawTransferObj::WriteObject( tools::SvRef<SotTempStream>& rxOStm, void* { ::utl::TempFile aTempFile; aTempFile.EnableKillingFile(); + SvStream* pTempStream = aTempFile.GetStream(StreamMode::READWRITE); uno::Reference< embed::XStorage > xWorkStore = - ::comphelper::OStorageHelper::GetStorageFromURL( aTempFile.GetURL(), embed::ElementModes::READWRITE ); + ::comphelper::OStorageHelper::GetStorageFromStream( new utl::OStreamWrapper(*pTempStream) ); // write document storage pEmbObj->SetupStorage( xWorkStore, SOFFICE_FILEFORMAT_CURRENT, false ); @@ -531,13 +533,8 @@ bool ScDrawTransferObj::WriteObject( tools::SvRef<SotTempStream>& rxOStm, void* if ( xTransact.is() ) xTransact->commit(); - std::unique_ptr<SvStream> pSrcStm = ::utl::UcbStreamHelper::CreateStream( aTempFile.GetURL(), StreamMode::READ ); - if( pSrcStm ) - { - rxOStm->SetBufferSize( 0xff00 ); - rxOStm->WriteStream( *pSrcStm ); - pSrcStm.reset(); - } + rxOStm->SetBufferSize( 0xff00 ); + rxOStm->WriteStream( *pTempStream ); xWorkStore->dispose(); xWorkStore.clear(); diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx index 670ad23976d6..26a9ddc504de 100644 --- a/sc/source/ui/app/transobj.cxx +++ b/sc/source/ui/app/transobj.cxx @@ -27,6 +27,7 @@ #include <osl/diagnose.h> #include <unotools/tempfile.hxx> #include <unotools/ucbstreamhelper.hxx> +#include <unotools/streamwrap.hxx> #include <comphelper/fileformat.h> #include <comphelper/lok.hxx> #include <comphelper/storagehelper.hxx> @@ -509,8 +510,9 @@ bool ScTransferObj::WriteObject( tools::SvRef<SotTempStream>& rxOStm, void* pUse SfxObjectShell* pEmbObj = static_cast<SfxObjectShell*>(pUserObject); ::utl::TempFile aTempFile; aTempFile.EnableKillingFile(); + SvStream* pTempStream = aTempFile.GetStream(StreamMode::READWRITE); uno::Reference< embed::XStorage > xWorkStore = - ::comphelper::OStorageHelper::GetStorageFromURL( aTempFile.GetURL(), embed::ElementModes::READWRITE ); + ::comphelper::OStorageHelper::GetStorageFromStream( new utl::OStreamWrapper(*pTempStream) ); // write document storage pEmbObj->SetupStorage( xWorkStore, SOFFICE_FILEFORMAT_CURRENT, false ); @@ -524,13 +526,8 @@ bool ScTransferObj::WriteObject( tools::SvRef<SotTempStream>& rxOStm, void* pUse if ( xTransact.is() ) xTransact->commit(); - std::unique_ptr<SvStream> pSrcStm = ::utl::UcbStreamHelper::CreateStream( aTempFile.GetURL(), StreamMode::READ ); - if( pSrcStm ) - { - rxOStm->SetBufferSize( 0xff00 ); - rxOStm->WriteStream( *pSrcStm ); - pSrcStm.reset(); - } + rxOStm->SetBufferSize( 0xff00 ); + rxOStm->WriteStream( *pTempStream ); bRet = true;