From f218110744cbb2ec79796d886042546e47334cca Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Mon, 13 May 2013 14:57:39 +0300 Subject: Get rid of GlobalEditData::GetStdRefDevice() This avoids a crash on exit in a dbgutil build on OS X. The horrible bOwnerOfRefDev crack screams out for boost::shared_ptr, I think? Change-Id: Icf3ae3c28da0583a44472f36312b07766734bf7b Reviewed-on: https://gerrit.libreoffice.org/3886 Reviewed-by: Bosdonnat Cedric Tested-by: Bosdonnat Cedric --- editeng/source/editeng/eerdll.cxx | 11 ----------- editeng/source/editeng/eerdll2.hxx | 4 ---- editeng/source/editeng/impedit2.cxx | 20 +++++++++++--------- 3 files changed, 11 insertions(+), 24 deletions(-) (limited to 'editeng') diff --git a/editeng/source/editeng/eerdll.cxx b/editeng/source/editeng/eerdll.cxx index c6a008df7eb8..704573aaa1eb 100644 --- a/editeng/source/editeng/eerdll.cxx +++ b/editeng/source/editeng/eerdll.cxx @@ -79,7 +79,6 @@ EditDLL& EditDLL::Get() } GlobalEditData::GlobalEditData() - : m_aStdRefDevice(::com::sun::star::uno::Reference(::comphelper::getProcessComponentContext(), ::com::sun::star::uno::UNO_QUERY_THROW)) { ppDefItems = NULL; } @@ -188,16 +187,6 @@ uno::Reference< linguistic2::XLanguageGuessing > GlobalEditData::GetLanguageGues return xLanguageGuesser; } -OutputDevice* GlobalEditData::GetStdRefDevice() -{ - if ( !m_aStdRefDevice ) - { - m_aStdRefDevice.reset(new VirtualDevice); - m_aStdRefDevice->SetMapMode( MAP_TWIP ); - } - return m_aStdRefDevice.get(); -} - EditResId::EditResId( sal_uInt16 nId ): ResId( nId, *EE_DLL().GetResMgr() ) { diff --git a/editeng/source/editeng/eerdll2.hxx b/editeng/source/editeng/eerdll2.hxx index ae592c347cc0..2c53b961c7f5 100644 --- a/editeng/source/editeng/eerdll2.hxx +++ b/editeng/source/editeng/eerdll2.hxx @@ -23,7 +23,6 @@ #include #include #include -#include class SfxPoolItem; @@ -32,7 +31,6 @@ class GlobalEditData private: ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XLanguageGuessing > xLanguageGuesser; - comphelper::scoped_disposing_solar_mutex_reset_ptr m_aStdRefDevice; SfxPoolItem** ppDefItems; rtl::Reference xForbiddenCharsTable; @@ -42,14 +40,12 @@ public: ~GlobalEditData(); SfxPoolItem** GetDefItems(); - OutputDevice* GetStdRefDevice(); rtl::Reference GetForbiddenCharsTable(); void SetForbiddenCharsTable( rtl::Reference xForbiddenChars ) { xForbiddenCharsTable = xForbiddenChars; } ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XLanguageGuessing > GetLanguageGuesser(); }; - #endif //_EERDLL2_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index b46b23cf72ef..8bd73063b646 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -150,10 +150,8 @@ ImpEditEngine::ImpEditEngine( EditEngine* pEE, SfxItemPool* pItemPool ) : aOnlineSpellTimer.SetTimeout( 100 ); aOnlineSpellTimer.SetTimeoutHdl( LINK( this, ImpEditEngine, OnlineSpellHdl ) ); - pRefDev = EE_DLL().GetGlobalData()->GetStdRefDevice(); - // Access data already from here on! - SetRefDevice( pRefDev ); + SetRefDevice( NULL ); InitDoc( sal_False ); bCallParaInsertedOrDeleted = true; @@ -190,11 +188,16 @@ void ImpEditEngine::SetRefDevice( OutputDevice* pRef ) if ( bOwnerOfRefDev ) delete pRefDev; - pRefDev = pRef; - bOwnerOfRefDev = false; - if ( !pRef ) - pRefDev = EE_DLL().GetGlobalData()->GetStdRefDevice(); + { + pRefDev = new VirtualDevice; + pRefDev->SetMapMode( MAP_TWIP ); + bOwnerOfRefDev = true; + } else + { + pRefDev = pRef; + bOwnerOfRefDev = false; + } nOnePixelInRef = (sal_uInt16)pRefDev->PixelToLogic( Size( 1, 0 ) ).Width(); @@ -210,8 +213,7 @@ void ImpEditEngine::SetRefMapMode( const MapMode& rMapMode ) if ( GetRefDevice()->GetMapMode() == rMapMode ) return; - // When RefDev == GlobalRefDev => create own! - if ( !bOwnerOfRefDev && ( pRefDev == EE_DLL().GetGlobalData()->GetStdRefDevice() ) ) + if ( !bOwnerOfRefDev ) { pRefDev = new VirtualDevice; pRefDev->SetMapMode( MAP_TWIP ); -- cgit