[Libreoffice-commits] core.git: 3 commits - include/sfx2 linguistic/source sfx2/source

Noel Grandin noel.grandin at collabora.co.uk
Thu Jan 19 06:01:37 UTC 2017


 include/sfx2/tbxctrl.hxx        |   12 ++++++------
 linguistic/source/dlistimp.cxx  |   38 ++++++++++++++++++--------------------
 linguistic/source/dlistimp.hxx  |   14 +++++---------
 sfx2/source/toolbox/tbxitem.cxx |   10 ++--------
 sfx2/source/view/viewsh.cxx     |   19 ++++++++-----------
 5 files changed, 39 insertions(+), 54 deletions(-)

New commits:
commit 70b05273c91cfec0cd7a9a54ff993c5b7f808d4f
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Jan 18 15:38:59 2017 +0200

    use rtl::Reference in AsyncExecuteInfo
    
    instead of storing both a raw pointer and an uno::Reference
    
    Change-Id: Ia52aae8b3894813c4169772eb4cf89ae7df0003a

diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 91e1c28..04e600f 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -124,12 +124,11 @@ public:
 
     struct AsyncExecuteInfo
     {
-        AsyncExecuteInfo( AsyncExecuteCmd eCmd, uno::Reference< datatransfer::clipboard::XClipboardListener > const & xThis, SfxClipboardChangeListener* pListener ) :
-            m_eCmd( eCmd ), m_xThis( xThis ), m_pListener( pListener ) {}
+        AsyncExecuteInfo( AsyncExecuteCmd eCmd, SfxClipboardChangeListener* pListener ) :
+            m_eCmd( eCmd ), m_xListener( pListener ) {}
 
         AsyncExecuteCmd m_eCmd;
-        uno::Reference< datatransfer::clipboard::XClipboardListener > m_xThis;
-        SfxClipboardChangeListener* m_pListener;
+        rtl::Reference<SfxClipboardChangeListener> m_xListener;
     };
 
 private:
@@ -173,13 +172,12 @@ IMPL_STATIC_LINK( SfxClipboardChangeListener, AsyncExecuteHdl_Impl, void*, p, vo
     AsyncExecuteInfo* pAsyncExecuteInfo = static_cast<AsyncExecuteInfo*>(p);
     if ( pAsyncExecuteInfo )
     {
-        uno::Reference< datatransfer::clipboard::XClipboardListener > xThis( pAsyncExecuteInfo->m_xThis );
-        if ( pAsyncExecuteInfo->m_pListener )
+        if ( pAsyncExecuteInfo->m_xListener.is() )
         {
             if ( pAsyncExecuteInfo->m_eCmd == ASYNCEXECUTE_CMD_DISPOSING )
-                pAsyncExecuteInfo->m_pListener->DisconnectViewShell();
+                pAsyncExecuteInfo->m_xListener->DisconnectViewShell();
             else if ( pAsyncExecuteInfo->m_eCmd == ASYNCEXECUTE_CMD_CHANGEDCONTENTS )
-                pAsyncExecuteInfo->m_pListener->ChangedContents();
+                pAsyncExecuteInfo->m_xListener->ChangedContents();
         }
     }
     delete pAsyncExecuteInfo;
@@ -201,7 +199,7 @@ void SAL_CALL SfxClipboardChangeListener::disposing( const lang::EventObject& /*
     // Make asynchronous call to avoid locking SolarMutex which is the
     // root for many deadlocks, especially in conjunction with the "Windows"
     // based single thread apartment clipboard code!
-    AsyncExecuteInfo* pInfo = new AsyncExecuteInfo( ASYNCEXECUTE_CMD_DISPOSING, xThis, this );
+    AsyncExecuteInfo* pInfo = new AsyncExecuteInfo( ASYNCEXECUTE_CMD_DISPOSING, this );
     Application::PostUserEvent( LINK( nullptr, SfxClipboardChangeListener, AsyncExecuteHdl_Impl ), pInfo );
 }
 
@@ -211,8 +209,7 @@ void SAL_CALL SfxClipboardChangeListener::changedContents( const datatransfer::c
     // Make asynchronous call to avoid locking SolarMutex which is the
     // root for many deadlocks, especially in conjunction with the "Windows"
     // based single thread apartment clipboard code!
-    uno::Reference< datatransfer::clipboard::XClipboardListener > xThis( static_cast< datatransfer::clipboard::XClipboardListener* >( this ));
-    AsyncExecuteInfo* pInfo = new AsyncExecuteInfo( ASYNCEXECUTE_CMD_CHANGEDCONTENTS, xThis, this );
+    AsyncExecuteInfo* pInfo = new AsyncExecuteInfo( ASYNCEXECUTE_CMD_CHANGEDCONTENTS, this );
     Application::PostUserEvent( LINK( nullptr, SfxClipboardChangeListener, AsyncExecuteHdl_Impl ), pInfo );
 }
 
commit 5288ae5912d6c76cfb80a68025b3af4ba6045c6b
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Jan 18 15:16:02 2017 +0200

    use rtl::Reference in DicList
    
    instead of storing both a raw pointer and a uno::Reference
    
    Change-Id: I34bce1c6b3875fbb0dc56fefb79eb6b16f9818dd

diff --git a/linguistic/source/dlistimp.cxx b/linguistic/source/dlistimp.cxx
index f869630..19caeb9 100644
--- a/linguistic/source/dlistimp.cxx
+++ b/linguistic/source/dlistimp.cxx
@@ -269,19 +269,17 @@ void DicList::MyAppExitListener::AtExit()
 DicList::DicList() :
     aEvtListeners   ( GetLinguMutex() )
 {
-    pDicEvtLstnrHelper  = new DicEvtListenerHelper( this );
-    xDicEvtLstnrHelper  = pDicEvtLstnrHelper;
+    mxDicEvtLstnrHelper  = new DicEvtListenerHelper( this );
     bDisposing = false;
     bInCreation = false;
 
-    pExitListener = new MyAppExitListener( *this );
-    xExitListener = pExitListener;
-    pExitListener->Activate();
+    mxExitListener = new MyAppExitListener( *this );
+    mxExitListener->Activate();
 }
 
 DicList::~DicList()
 {
-    pExitListener->Deactivate();
+    mxExitListener->Deactivate();
 }
 
 
@@ -434,7 +432,7 @@ sal_Bool SAL_CALL DicList::addDictionary(
         bRes = true;
 
         // add listener helper to the dictionaries listener lists
-        xDictionary->addDictionaryEventListener( xDicEvtLstnrHelper );
+        xDictionary->addDictionaryEventListener( mxDicEvtLstnrHelper.get() );
     }
     return bRes;
 }
@@ -461,7 +459,7 @@ sal_Bool SAL_CALL
             // deactivate dictionary if not already done
             xDic->setActive( false );
 
-            xDic->removeDictionaryEventListener( xDicEvtLstnrHelper );
+            xDic->removeDictionaryEventListener( mxDicEvtLstnrHelper.get() );
         }
 
         // remove element at nPos
@@ -486,7 +484,7 @@ sal_Bool SAL_CALL DicList::addDictionaryListEventListener(
     bool bRes = false;
     if (xListener.is()) //! don't add empty references
     {
-        bRes = pDicEvtLstnrHelper->
+        bRes = mxDicEvtLstnrHelper->
                         AddDicListEvtListener( xListener, bReceiveVerbose );
     }
     return bRes;
@@ -504,7 +502,7 @@ sal_Bool SAL_CALL DicList::removeDictionaryListEventListener(
     bool bRes = false;
     if(xListener.is())
     {
-        bRes = pDicEvtLstnrHelper->RemoveDicListEvtListener( xListener );
+        bRes = mxDicEvtLstnrHelper->RemoveDicListEvtListener( xListener );
     }
     return bRes;
 }
@@ -512,19 +510,19 @@ sal_Bool SAL_CALL DicList::removeDictionaryListEventListener(
 sal_Int16 SAL_CALL DicList::beginCollectEvents() throw(RuntimeException, std::exception)
 {
     osl::MutexGuard aGuard( GetLinguMutex() );
-    return pDicEvtLstnrHelper->BeginCollectEvents();
+    return mxDicEvtLstnrHelper->BeginCollectEvents();
 }
 
 sal_Int16 SAL_CALL DicList::endCollectEvents() throw(RuntimeException, std::exception)
 {
     osl::MutexGuard aGuard( GetLinguMutex() );
-    return pDicEvtLstnrHelper->EndCollectEvents();
+    return mxDicEvtLstnrHelper->EndCollectEvents();
 }
 
 sal_Int16 SAL_CALL DicList::flushEvents() throw(RuntimeException, std::exception)
 {
     osl::MutexGuard aGuard( GetLinguMutex() );
-    return pDicEvtLstnrHelper->FlushEvents();
+    return mxDicEvtLstnrHelper->FlushEvents();
 }
 
 uno::Reference< XDictionary > SAL_CALL
@@ -563,8 +561,8 @@ void SAL_CALL
         EventObject aEvtObj( static_cast<XDictionaryList *>(this) );
 
         aEvtListeners.disposeAndClear( aEvtObj );
-        if (pDicEvtLstnrHelper)
-            pDicEvtLstnrHelper->DisposeAndClear( aEvtObj );
+        if (mxDicEvtLstnrHelper.is())
+            mxDicEvtLstnrHelper->DisposeAndClear( aEvtObj );
 
         //! avoid creation of dictionaries if not already done
         if ( !aDicList.empty() )
@@ -592,10 +590,10 @@ void SAL_CALL
                 // release references to (members of) this object hold by
                 // dictionaries
                 if (xDic.is())
-                    xDic->removeDictionaryEventListener( xDicEvtLstnrHelper );
+                    xDic->removeDictionaryEventListener( mxDicEvtLstnrHelper.get() );
             }
         }
-        xDicEvtLstnrHelper.clear();
+        mxDicEvtLstnrHelper.clear();
     }
 }
 
@@ -650,7 +648,7 @@ void DicList::CreateDicList()
     //! to suppress overwriting the list of active dictionaries in the
     //! configuration with incorrect arguments during the following
     //! activation of the dictionaries
-    pDicEvtLstnrHelper->BeginCollectEvents();
+    mxDicEvtLstnrHelper->BeginCollectEvents();
     const uno::Sequence< OUString > aActiveDics( aOpt.GetActiveDics() );
     const OUString *pActiveDic = aActiveDics.getConstArray();
     sal_Int32 nLen = aActiveDics.getLength();
@@ -666,9 +664,9 @@ void DicList::CreateDicList()
 
     // suppress collected events during creation of the dictionary list.
     // there should be no events during creation.
-    pDicEvtLstnrHelper->ClearEvents();
+    mxDicEvtLstnrHelper->ClearEvents();
 
-    pDicEvtLstnrHelper->EndCollectEvents();
+    mxDicEvtLstnrHelper->EndCollectEvents();
 
     bInCreation = false;
 }
diff --git a/linguistic/source/dlistimp.hxx b/linguistic/source/dlistimp.hxx
index 4d4062d..3e9130b 100644
--- a/linguistic/source/dlistimp.hxx
+++ b/linguistic/source/dlistimp.hxx
@@ -26,6 +26,7 @@
 
 #include <cppuhelper/implbase.hxx>
 #include <cppuhelper/interfacecontainer.h>
+#include <rtl/ref.hxx>
 
 #include <vector>
 
@@ -54,18 +55,13 @@ class DicList :
 
     LinguOptions    aOpt;
 
-    ::comphelper::OInterfaceContainerHelper2       aEvtListeners;
+    ::comphelper::OInterfaceContainerHelper2    aEvtListeners;
 
     typedef std::vector< css::uno::Reference< css::linguistic2::XDictionary > >   DictionaryVec_t;
-    DictionaryVec_t                          aDicList;
+    DictionaryVec_t                             aDicList;
 
-    css::uno::Reference< css::linguistic2::
-                XDictionaryEventListener >  xDicEvtLstnrHelper;
-    DicEvtListenerHelper                    *pDicEvtLstnrHelper;
-
-    css::uno::Reference< css::frame::
-                XTerminateListener >        xExitListener;
-    MyAppExitListener                       *pExitListener;
+    rtl::Reference<DicEvtListenerHelper>        mxDicEvtLstnrHelper;
+    rtl::Reference<MyAppExitListener>           mxExitListener;
 
     bool    bDisposing;
     bool    bInCreation;
commit 73df118fde5ce5c380a5f9e8867240e2b5abfdcb
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed Jan 18 14:29:59 2017 +0200

    use rtl::Reference in SfxPopupWindow
    
    instead of storing both a raw pointer and an uno::Reference
    
    Change-Id: I8fc679cd22f2ac24fb3f1c71939318921c1d674b

diff --git a/include/sfx2/tbxctrl.hxx b/include/sfx2/tbxctrl.hxx
index 96b45af..02783f4 100644
--- a/include/sfx2/tbxctrl.hxx
+++ b/include/sfx2/tbxctrl.hxx
@@ -35,6 +35,7 @@
 #include <com/sun/star/frame/XDispatchProvider.hpp>
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XSubToolbarController.hpp>
+#include <rtl/ref.hxx>
 
 
 class SfxToolBoxControl;
@@ -67,13 +68,12 @@ class SfxFrameStatusListener;
 class SFX2_DLLPUBLIC SfxPopupWindow: public FloatingWindow
 {
 friend class SfxFrameStatusListener;
-    bool                                                                             m_bFloating;
-    bool                                                                             m_bCascading;
-    Link<SfxPopupWindow*,void>                                                       m_aDeleteLink;
-    sal_uInt16                                                                       m_nId;
+    bool                                                   m_bFloating;
+    bool                                                   m_bCascading;
+    Link<SfxPopupWindow*,void>                             m_aDeleteLink;
+    sal_uInt16                                             m_nId;
     css::uno::Reference< css::frame::XFrame > const        m_xFrame;
-    SfxFrameStatusListener*                                                          m_pStatusListener;
-    css::uno::Reference< css::lang::XComponent >           m_xStatusListener;
+    rtl::Reference<SfxFrameStatusListener>                 m_xStatusListener;
 
 private:
     SfxPopupWindow(SfxPopupWindow &) = delete;
diff --git a/sfx2/source/toolbox/tbxitem.cxx b/sfx2/source/toolbox/tbxitem.cxx
index 599a206..15df108 100644
--- a/sfx2/source/toolbox/tbxitem.cxx
+++ b/sfx2/source/toolbox/tbxitem.cxx
@@ -737,7 +737,6 @@ SfxPopupWindow::SfxPopupWindow(
     , m_bCascading( false )
     , m_nId( nId )
     , m_xFrame( rFrame )
-    , m_pStatusListener( nullptr )
 {
     vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
     if ( pWindow )
@@ -751,7 +750,6 @@ SfxPopupWindow::SfxPopupWindow(sal_uInt16 nId, const OString& rID, const OUStrin
     , m_bCascading( false )
     , m_nId( nId )
     , m_xFrame( rFrame )
-    , m_pStatusListener( nullptr )
 {
     vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
     if ( pWindow )
@@ -768,7 +766,6 @@ SfxPopupWindow::SfxPopupWindow(
     , m_bCascading( false )
     , m_nId( nId )
     , m_xFrame( rFrame )
-    , m_pStatusListener( nullptr )
 {
     vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
     if ( pWindow )
@@ -785,7 +782,6 @@ SfxPopupWindow::SfxPopupWindow(
     , m_bCascading( false )
     , m_nId( nId )
     , m_xFrame( rFrame )
-    , m_pStatusListener( nullptr )
 {
     vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
     if ( pWindow )
@@ -803,7 +799,6 @@ void SfxPopupWindow::dispose()
     {
         m_xStatusListener->dispose();
         m_xStatusListener.clear();
-        m_pStatusListener = nullptr;
     }
 
     vcl::Window* pWindow = GetTopMostParentSystemWindow( this );
@@ -817,14 +812,13 @@ void SfxPopupWindow::AddStatusListener( const OUString& rCommandURL )
 {
     if ( !m_xStatusListener.is() )
     {
-        m_pStatusListener = new SfxFrameStatusListener(
+        m_xStatusListener = new SfxFrameStatusListener(
                                     ::comphelper::getProcessComponentContext(),
                                     m_xFrame,
                                     this );
-        m_xStatusListener.set( static_cast< cppu::OWeakObject* >( m_pStatusListener ), UNO_QUERY );
     }
     if ( m_xStatusListener.is() )
-        m_pStatusListener->addStatusListener( rCommandURL );
+        m_xStatusListener->addStatusListener( rCommandURL );
 }
 
 


More information about the Libreoffice-commits mailing list