[Libreoffice-commits] core.git: 6 commits - accessibility/inc accessibility/source include/xmloff linguistic/inc linguistic/source vcl/unx xmloff/source

Noel Grandin noel.grandin at collabora.co.uk
Tue Jan 17 09:00:33 UTC 2017


 accessibility/inc/extended/AccessibleBrowseBox.hxx      |   11 -
 accessibility/inc/extended/AccessibleGridControl.hxx    |   15 -
 accessibility/source/extended/AccessibleBrowseBox.cxx   |   75 +++----
 accessibility/source/extended/AccessibleGridControl.cxx |  127 +++++--------
 include/xmloff/xmlexp.hxx                               |    7 
 linguistic/inc/iprcache.hxx                             |    9 
 linguistic/source/iprcache.cxx                          |   11 -
 linguistic/source/lngsvcmgr.cxx                         |  155 +++++++---------
 linguistic/source/lngsvcmgr.hxx                         |   25 --
 vcl/unx/generic/dtrans/X11_droptarget.cxx               |   16 -
 vcl/unx/generic/dtrans/X11_selection.hxx                |    7 
 xmloff/source/core/xmlexp.cxx                           |   30 +--
 12 files changed, 210 insertions(+), 278 deletions(-)

New commits:
commit eede420e30b7b69aedd5050d1d335e20c584559a
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Jan 16 15:54:44 2017 +0200

    use rtl::Reference in AccessibleGridControlAccess
    
    instead of storing both raw pointers and uno::Reference
    
    Change-Id: Ie2306b619bec81707c5cff4debb8c7462ac2f9a1

diff --git a/accessibility/inc/extended/AccessibleGridControl.hxx b/accessibility/inc/extended/AccessibleGridControl.hxx
index c99ac4e..703ea09 100644
--- a/accessibility/inc/extended/AccessibleGridControl.hxx
+++ b/accessibility/inc/extended/AccessibleGridControl.hxx
@@ -164,14 +164,9 @@ class AccessibleGridControlAccess :
     ,public ::svt::table::IAccessibleTableControl
 {
 private:
-    css::uno::Reference< css::accessibility::XAccessible >
-                                        m_xParent;
-    ::svt::table::IAccessibleTable *    m_pTable;
-
-    css::uno::Reference< css::accessibility::XAccessibleContext >
-                                m_xContext;
-    AccessibleGridControl*      m_pContext;
-                                    // note that this pointer is valid as long as m_xContext is valid!
+    css::uno::Reference< css::accessibility::XAccessible > m_xParent;
+    ::svt::table::IAccessibleTable *                       m_pTable;
+    rtl::Reference<AccessibleGridControl>                  m_xContext;
 
 public:
     AccessibleGridControlAccess(
@@ -180,7 +175,7 @@ public:
     );
 
     /// returns the AccessibleContext belonging to this Accessible
-    inline AccessibleGridControl*            getContext()         { return m_pContext; }
+    inline AccessibleGridControl*            getContext()  { return m_xContext.get(); }
 
 protected:
     virtual ~AccessibleGridControlAccess() override;
@@ -198,7 +193,7 @@ protected:
     void DisposeAccessImpl() override;
     virtual bool isAlive() const override
     {
-        return m_pContext && m_pContext->isAlive();
+        return m_xContext.is() && m_xContext->isAlive();
     }
     virtual void commitCellEvent( sal_Int16 nEventId,
          const css::uno::Any& rNewValue, const css::uno::Any& rOldValue ) override
diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx
index b486f62..1203e9a 100644
--- a/accessibility/source/extended/AccessibleGridControl.cxx
+++ b/accessibility/source/extended/AccessibleGridControl.cxx
@@ -47,20 +47,16 @@ public:
     css::uno::WeakReference< css::accessibility::XAccessible >                    m_aCreator;
 
     /** The data table child. */
-    css::uno::Reference< css::accessibility::XAccessible >    m_xTable;
-    AccessibleGridControlTable*                     m_pTable;
+    rtl::Reference<AccessibleGridControlTable>                m_xTable;
 
     /** The header bar for rows. */
-    css::uno::Reference< css::accessibility::XAccessible >    m_xRowHeaderBar;
-    AccessibleGridControlHeader*                    m_pRowHeaderBar;
+    rtl::Reference<AccessibleGridControlHeader>               m_xRowHeaderBar;
 
     /** The header bar for columns (first row of the table). */
-    css::uno::Reference< css::accessibility::XAccessible >    m_xColumnHeaderBar;
-    AccessibleGridControlHeader*                    m_pColumnHeaderBar;
+    rtl::Reference<AccessibleGridControlHeader>               m_xColumnHeaderBar;
 
     /** The table cell child. */
-    css::uno::Reference< css::accessibility::XAccessible >    m_xCell;
-    AccessibleGridControlTableCell*                 m_pCell;
+    rtl::Reference<AccessibleGridControlTableCell>            m_xCell;
 
 };
 
@@ -83,29 +79,28 @@ void SAL_CALL AccessibleGridControl::disposing()
 {
     SolarMutexGuard g;
 
-    m_xImpl->m_pTable       = nullptr;
-    m_xImpl->m_pColumnHeaderBar = nullptr;
-    m_xImpl->m_pRowHeaderBar    = nullptr;
-    m_xImpl->m_pCell            = nullptr;
     m_xImpl->m_aCreator.clear();
 
-    css::uno::Reference< css::accessibility::XAccessible >  xTable = m_xImpl->m_xTable;
-
-    css::uno::Reference< XComponent > xComp( m_xImpl->m_xTable, UNO_QUERY );
-    if ( xComp.is() )
+    if ( m_xImpl->m_xTable.is() )
     {
-        xComp->dispose();
+        m_xImpl->m_xTable->dispose();
+        m_xImpl->m_xTable.clear();
     }
-    css::uno::Reference< css::accessibility::XAccessible >  xCell = m_xImpl->m_xCell;
-
-    css::uno::Reference< XComponent > xCellComp( m_xImpl->m_xCell, UNO_QUERY );
-    if ( xCellComp.is() )
+    if ( m_xImpl->m_xCell.is() )
     {
-        xCellComp->dispose();
+        m_xImpl->m_xCell->dispose();
+        m_xImpl->m_xCell.clear();
+    }
+    if ( m_xImpl->m_xRowHeaderBar.is() )
+    {
+        m_xImpl->m_xRowHeaderBar->dispose();
+        m_xImpl->m_xRowHeaderBar.clear();
+    }
+    if ( m_xImpl->m_xColumnHeaderBar.is() )
+    {
+        m_xImpl->m_xColumnHeaderBar->dispose();
+        m_xImpl->m_xColumnHeaderBar.clear();
     }
-
-    ::comphelper::disposeComponent(m_xImpl->m_xRowHeaderBar);
-    ::comphelper::disposeComponent(m_xImpl->m_xColumnHeaderBar);
     AccessibleGridControlBase::disposing();
 }
 
@@ -137,29 +132,25 @@ AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex )
         {
             if(!m_xImpl->m_xColumnHeaderBar.is())
             {
-                AccessibleGridControlHeader* pColHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_COLUMNHEADERBAR);
-                m_xImpl->m_xColumnHeaderBar = pColHeaderBar;
+                m_xImpl->m_xColumnHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_COLUMNHEADERBAR);
             }
-            xChild = m_xImpl->m_xColumnHeaderBar;
+            xChild = m_xImpl->m_xColumnHeaderBar.get();
         }
         else if(m_aTable.HasRowHeader() && (nChildIndex == 1 || nChildIndex == 0))
         {
             if(!m_xImpl->m_xRowHeaderBar.is())
             {
-                AccessibleGridControlHeader* pRowHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_ROWHEADERBAR);
-                m_xImpl->m_xRowHeaderBar = pRowHeaderBar;
+                m_xImpl->m_xRowHeaderBar = new AccessibleGridControlHeader(m_xImpl->m_aCreator, m_aTable, svt::table::TCTYPE_ROWHEADERBAR);
             }
-            xChild = m_xImpl->m_xRowHeaderBar;
+            xChild = m_xImpl->m_xRowHeaderBar.get();
         }
         else
         {
             if(!m_xImpl->m_xTable.is())
             {
-            AccessibleGridControlTable* pTable = new AccessibleGridControlTable(m_xImpl->m_aCreator, m_aTable);
-            m_xImpl->m_xTable = pTable;
-                m_xImpl->m_pTable = pTable;
+                m_xImpl->m_xTable = new AccessibleGridControlTable(m_xImpl->m_aCreator, m_aTable);
             }
-            xChild = m_xImpl->m_xTable;
+            xChild = m_xImpl->m_xTable.get();
         }
     }
     return xChild;
@@ -246,10 +237,9 @@ css::uno::Reference< css::accessibility::XAccessible > AccessibleGridControl::im
 {
     if( !m_xImpl->m_xTable.is() )
     {
-        m_xImpl->m_pTable = createAccessibleTable();
-        m_xImpl->m_xTable  = m_xImpl->m_pTable;
+        m_xImpl->m_xTable = createAccessibleTable();
     }
-    return m_xImpl->m_xTable;
+    return m_xImpl->m_xTable.get();
 }
 
 
@@ -257,7 +247,7 @@ css::uno::Reference< css::accessibility::XAccessible >
 AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType )
 {
     css::uno::Reference< css::accessibility::XAccessible > xRet;
-    css::uno::Reference< css::accessibility::XAccessible >* pxMember = nullptr;
+    rtl::Reference< AccessibleGridControlHeader >* pxMember = nullptr;
 
     if( eObjType == TCTYPE_ROWHEADERBAR )
         pxMember = &m_xImpl->m_xRowHeaderBar;
@@ -268,17 +258,10 @@ AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType
     {
         if( !pxMember->is() )
         {
-            AccessibleGridControlHeader* pHeaderBar = new AccessibleGridControlHeader(
+            *pxMember = new AccessibleGridControlHeader(
                 m_xImpl->m_aCreator, m_aTable, eObjType );
-
-            if ( TCTYPE_COLUMNHEADERBAR == eObjType)
-                m_xImpl->m_pColumnHeaderBar = pHeaderBar;
-            else
-                m_xImpl->m_pRowHeaderBar    = pHeaderBar;
-
-            *pxMember = pHeaderBar;
         }
-        xRet = *pxMember;
+        xRet = pxMember->get();
     }
     return xRet;
 }
@@ -318,16 +301,16 @@ void AccessibleGridControl::commitCellEvent(sal_Int16 _nEventId,const Any& _rNew
         {
             css::uno::Reference< css::accessibility::XAccessible > xAccessible = getAccessibleChild(i);
             css::uno::Reference< css::accessibility::XAccessibleContext > xAccessibleChild = xAccessible->getAccessibleContext();
-            if(m_xImpl->m_xTable == xAccessible)
+            if(css::uno::Reference< css::accessibility::XAccessible >(m_xImpl->m_xTable.get()) == xAccessible)
             {
                 std::vector< AccessibleGridControlTableCell* >& rCells =
-                    m_xImpl->m_pTable->getCellVector();
+                    m_xImpl->m_xTable->getCellVector();
                 size_t nIndex = m_aTable.GetCurrentRow() * m_aTable.GetColumnCount()
                               + m_aTable.GetCurrentColumn();
                 if (nIndex < rCells.size() && rCells[nIndex])
                 {
-                    m_xImpl->m_pCell = rCells[nIndex];
-                    m_xImpl->m_pCell->commitEvent( _nEventId, _rNewValue, _rOldValue );
+                    m_xImpl->m_xCell = rCells[nIndex];
+                    m_xImpl->m_xCell->commitEvent( _nEventId, _rNewValue, _rOldValue );
                 }
             }
         }
@@ -335,7 +318,7 @@ void AccessibleGridControl::commitCellEvent(sal_Int16 _nEventId,const Any& _rNew
     else
     {
         if ( m_xImpl->m_xTable.is() )
-            m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
+            m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
     }
 }
 
@@ -351,9 +334,9 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe
             if (nCurrentRow > -1 && nCurrentCol > -1)
             {
                 sal_Int32 nColumnCount = m_aTable.GetColumnCount();
-                xChild = m_xImpl->m_pTable->getAccessibleChild(nCurrentRow * nColumnCount + nCurrentCol);
+                xChild = m_xImpl->m_xTable->getAccessibleChild(nCurrentRow * nColumnCount + nCurrentCol);
             }
-            m_xImpl->m_pTable->commitEvent(_nEventId, makeAny(xChild),_rOldValue);
+            m_xImpl->m_xTable->commitEvent(_nEventId, makeAny(xChild),_rOldValue);
         }
         else if(_nEventId == AccessibleEventId::TABLE_MODEL_CHANGED)
         {
@@ -363,33 +346,33 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe
                 if(aChange.Type == AccessibleTableModelChangeType::DELETE)
                 {
                     std::vector< AccessibleGridControlTableCell* >& rCells =
-                        m_xImpl->m_pTable->getCellVector();
+                        m_xImpl->m_xTable->getCellVector();
                     std::vector< css::uno::Reference< css::accessibility::XAccessible > >& rAccCells =
-                        m_xImpl->m_pTable->getAccessibleCellVector();
+                        m_xImpl->m_xTable->getAccessibleCellVector();
                     int nColCount = m_aTable.GetColumnCount();
                     // check valid index - entries are inserted lazily
                     size_t const nStart = nColCount * aChange.FirstRow;
                     size_t const nEnd   = nColCount * aChange.LastRow;
                     if (nStart < rCells.size())
                     {
-                        m_xImpl->m_pTable->getCellVector().erase(
+                        m_xImpl->m_xTable->getCellVector().erase(
                             rCells.begin() + nStart,
                             rCells.begin() + std::min(rCells.size(), nEnd));
                     }
                     if (nStart < rAccCells.size())
                     {
-                        m_xImpl->m_pTable->getAccessibleCellVector().erase(
+                        m_xImpl->m_xTable->getAccessibleCellVector().erase(
                             rAccCells.begin() + nStart,
                             rAccCells.begin() + std::min(rAccCells.size(), nEnd));
                     }
-                    m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
+                    m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
                 }
                 else
-                    m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
+                    m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
             }
         }
         else
-            m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
+            m_xImpl->m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
     }
 }
 
@@ -400,7 +383,6 @@ AccessibleGridControlAccess::AccessibleGridControlAccess(
         const css::uno::Reference< css::accessibility::XAccessible >& rxParent, ::svt::table::IAccessibleTable& rTable )
     : m_xParent( rxParent )
     , m_pTable( & rTable )
-    , m_pContext( nullptr )
 {
 }
 
@@ -415,8 +397,11 @@ void AccessibleGridControlAccess::DisposeAccessImpl()
     SolarMutexGuard g;
 
     m_pTable = nullptr;
-    m_pContext = nullptr;
-    ::comphelper::disposeComponent( m_xContext );
+    if (m_xContext.is())
+    {
+        m_xContext->dispose();
+        m_xContext.clear();
+    }
 }
 
 
@@ -424,19 +409,15 @@ css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL Accessibl
 {
     SolarMutexGuard g;
 
-    OSL_ENSURE( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ),
-        "extended/AccessibleGridControlAccess::getAccessibleContext: inconsistency!" );
-
     // if the context died meanwhile (we're no listener, so it won't tell us explicitly when this happens),
     // then reset an re-create.
-    if ( m_pContext && !m_pContext->isAlive() )
-        m_xContext = m_pContext = nullptr;
+    if ( m_xContext.is() && !m_xContext->isAlive() )
+        m_xContext = nullptr;
 
     if (!m_xContext.is() && m_pTable)
-        m_xContext = m_pContext =
-            new AccessibleGridControl(m_xParent, this, *m_pTable);
+        m_xContext = new AccessibleGridControl(m_xParent, this, *m_pTable);
 
-    return m_xContext;
+    return m_xContext.get();
 }
 
 
commit be0089b58b1a4a2f2d73a8da0b40b7b029c277a2
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Jan 16 15:37:13 2017 +0200

    use rtl::Reference in AccessibleBrowseBoxAccess
    
    instead of storing a raw pointer and a uno::Reference
    
    Change-Id: I4326cbda900e053599f1e753cb1bff122bdecc44

diff --git a/accessibility/inc/extended/AccessibleBrowseBox.hxx b/accessibility/inc/extended/AccessibleBrowseBox.hxx
index bc6f1a5..69debf4 100644
--- a/accessibility/inc/extended/AccessibleBrowseBox.hxx
+++ b/accessibility/inc/extended/AccessibleBrowseBox.hxx
@@ -195,15 +195,12 @@ class AccessibleBrowseBoxAccess:
     public ::svt::IAccessibleBrowseBox
 {
 private:
-    ::osl::Mutex                m_aMutex;
+    ::osl::Mutex                        m_aMutex;
     css::uno::Reference< css::accessibility::XAccessible >
                                         m_xParent;
     ::svt::IAccessibleTableProvider&    m_rBrowseBox;
 
-    css::uno::Reference< css::accessibility::XAccessibleContext >
-                                m_xContext;
-    AccessibleBrowseBox*        m_pContext;
-                                    // note that this pointer is valid as long as m_xContext is valid!
+    rtl::Reference<AccessibleBrowseBox> m_xContext;
 
 public:
     AccessibleBrowseBoxAccess(
@@ -212,7 +209,7 @@ public:
     );
 
     /// returns the AccessibleContext belonging to this Accessible
-    inline AccessibleBrowseBox*            getContext()         { return m_pContext; }
+    inline AccessibleBrowseBox*            getContext() { return m_xContext.get(); }
 
 protected:
     virtual ~AccessibleBrowseBoxAccess() override;
@@ -230,7 +227,7 @@ protected:
     void dispose() override;
     virtual bool isAlive() const override
     {
-        return m_pContext && m_pContext->isAlive();
+        return m_xContext.is() && m_xContext->isAlive();
     }
     virtual css::uno::Reference< css::accessibility::XAccessible >
         getHeaderBar( ::svt::AccessibleBrowseBoxObjType _eObjType ) override
diff --git a/accessibility/source/extended/AccessibleBrowseBox.cxx b/accessibility/source/extended/AccessibleBrowseBox.cxx
index 377dc0a..07baad0 100644
--- a/accessibility/source/extended/AccessibleBrowseBox.cxx
+++ b/accessibility/source/extended/AccessibleBrowseBox.cxx
@@ -21,7 +21,6 @@
 #include "extended/AccessibleBrowseBoxTable.hxx"
 #include "extended/AccessibleBrowseBoxHeaderBar.hxx"
 #include <svtools/accessibletableprovider.hxx>
-#include <comphelper/types.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 #include <sal/types.h>
 
@@ -43,16 +42,13 @@ public:
     css::uno::WeakReference< css::accessibility::XAccessible >  m_aCreator;
 
     /** The data table child. */
-    css::uno::Reference< css::accessibility::XAccessible >      mxTable;
-    AccessibleBrowseBoxTable*                                   m_pTable;
+    rtl::Reference<AccessibleBrowseBoxTable>                    mxTable;
 
     /** The header bar for rows ("handle column"). */
-    css::uno::Reference< css::accessibility::XAccessible >      mxRowHeaderBar;
-    AccessibleBrowseBoxHeaderBar*                               m_pRowHeaderBar;
+    rtl::Reference<AccessibleBrowseBoxHeaderBar>                mxRowHeaderBar;
 
     /** The header bar for columns (first row of the table). */
-    css::uno::Reference< css::accessibility::XAccessible >      mxColumnHeaderBar;
-    AccessibleBrowseBoxHeaderBar*                               m_pColumnHeaderBar;
+    rtl::Reference<AccessibleBrowseBoxHeaderBar>                mxColumnHeaderBar;
 };
 
 // Ctor/Dtor/disposing
@@ -87,21 +83,23 @@ void SAL_CALL AccessibleBrowseBox::disposing()
 {
     ::osl::MutexGuard aGuard( getMutex() );
 
-    m_xImpl->m_pTable           = nullptr;
-    m_xImpl->m_pColumnHeaderBar = nullptr;
-    m_xImpl->m_pRowHeaderBar    = nullptr;
     m_xImpl->m_aCreator.clear();
 
-    css::uno::Reference< css::accessibility::XAccessible >  xTable = m_xImpl->mxTable;
-
-    css::uno::Reference< XComponent > xComp( m_xImpl->mxTable, UNO_QUERY );
-    if ( xComp.is() )
+    if ( m_xImpl->mxTable.is() )
     {
-        xComp->dispose();
-
+        m_xImpl->mxTable->dispose();
+        m_xImpl->mxTable.clear();
+    }
+    if ( m_xImpl->mxRowHeaderBar.is() )
+    {
+        m_xImpl->mxRowHeaderBar->dispose();
+        m_xImpl->mxRowHeaderBar.clear();
+    }
+    if ( m_xImpl->mxColumnHeaderBar.is() )
+    {
+        m_xImpl->mxColumnHeaderBar->dispose();
+        m_xImpl->mxColumnHeaderBar.clear();
     }
-    ::comphelper::disposeComponent(m_xImpl->mxRowHeaderBar);
-    ::comphelper::disposeComponent(m_xImpl->mxColumnHeaderBar);
 
     AccessibleBrowseBoxBase::disposing();
 }
@@ -218,11 +216,10 @@ css::uno::Reference< css::accessibility::XAccessible > AccessibleBrowseBox::impl
 {
     if( !m_xImpl->mxTable.is() )
     {
-        m_xImpl->m_pTable = createAccessibleTable();
-        m_xImpl->mxTable  = m_xImpl->m_pTable;
+        m_xImpl->mxTable = createAccessibleTable();
 
     }
-    return m_xImpl->mxTable;
+    return m_xImpl->mxTable.get();
 }
 
 
@@ -230,7 +227,7 @@ css::uno::Reference< css::accessibility::XAccessible >
 AccessibleBrowseBox::implGetHeaderBar( AccessibleBrowseBoxObjType eObjType )
 {
     css::uno::Reference< css::accessibility::XAccessible > xRet;
-    css::uno::Reference< css::accessibility::XAccessible >* pxMember = nullptr;
+    rtl::Reference< AccessibleBrowseBoxHeaderBar >* pxMember = nullptr;
 
     if( eObjType == BBTYPE_ROWHEADERBAR )
         pxMember = &m_xImpl->mxRowHeaderBar;
@@ -243,15 +240,9 @@ AccessibleBrowseBox::implGetHeaderBar( AccessibleBrowseBoxObjType eObjType )
         {
             AccessibleBrowseBoxHeaderBar* pHeaderBar = new AccessibleBrowseBoxHeaderBar(
                 m_xImpl->m_aCreator, *mpBrowseBox, eObjType );
-
-            if ( BBTYPE_COLUMNHEADERBAR == eObjType)
-                m_xImpl->m_pColumnHeaderBar = pHeaderBar;
-            else
-                m_xImpl->m_pRowHeaderBar    = pHeaderBar;
-
             *pxMember = pHeaderBar;
         }
-        xRet = *pxMember;
+        xRet = pxMember->get();
     }
     return xRet;
 }
@@ -287,7 +278,7 @@ void AccessibleBrowseBox::commitTableEvent(sal_Int16 _nEventId,const Any& _rNewV
 {
     if ( m_xImpl->mxTable.is() )
     {
-        m_xImpl->m_pTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
+        m_xImpl->mxTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
     }
 }
 
@@ -295,10 +286,9 @@ void AccessibleBrowseBox::commitHeaderBarEvent( sal_Int16 _nEventId,
                                                 const Any& _rNewValue,
                                                 const Any& _rOldValue,bool _bColumnHeaderBar)
 {
-    css::uno::Reference< css::accessibility::XAccessible > xHeaderBar = _bColumnHeaderBar ? m_xImpl->mxColumnHeaderBar : m_xImpl->mxRowHeaderBar;
-    AccessibleBrowseBoxHeaderBar* pHeaderBar = _bColumnHeaderBar ? m_xImpl->m_pColumnHeaderBar : m_xImpl->m_pRowHeaderBar;
+    rtl::Reference< AccessibleBrowseBoxHeaderBar >& xHeaderBar = _bColumnHeaderBar ? m_xImpl->mxColumnHeaderBar : m_xImpl->mxRowHeaderBar;
     if ( xHeaderBar.is() )
-        pHeaderBar->commitEvent(_nEventId,_rNewValue,_rOldValue);
+        xHeaderBar->commitEvent(_nEventId,_rNewValue,_rOldValue);
 }
 
 
@@ -307,7 +297,6 @@ void AccessibleBrowseBox::commitHeaderBarEvent( sal_Int16 _nEventId,
 AccessibleBrowseBoxAccess::AccessibleBrowseBoxAccess( const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, ::svt::IAccessibleTableProvider& _rBrowseBox )
         :m_xParent( _rxParent )
         ,m_rBrowseBox( _rBrowseBox )
-        ,m_pContext( nullptr )
 {
 }
 
@@ -321,8 +310,11 @@ void AccessibleBrowseBoxAccess::dispose()
 {
     ::osl::MutexGuard aGuard( m_aMutex );
 
-    m_pContext = nullptr;
-    ::comphelper::disposeComponent( m_xContext );
+    if (m_xContext.is())
+    {
+        m_xContext->dispose();
+        m_xContext.clear();
+    }
 }
 
 
@@ -330,18 +322,15 @@ css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL Accessibl
 {
     ::osl::MutexGuard aGuard( m_aMutex );
 
-    OSL_ENSURE( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ),
-        "extended/AccessibleBrowseBoxAccess::getAccessibleContext: inconsistency!" );
-
     // if the context died meanwhile (there is no listener, so it won't tell us explicitly when this happens),
     // then reset and re-create.
-    if ( m_pContext && !m_pContext->isAlive() )
-        m_xContext = m_pContext = nullptr;
+    if ( m_xContext.is() && !m_xContext->isAlive() )
+        m_xContext = nullptr;
 
     if ( !m_xContext.is() )
-        m_xContext = m_pContext = new AccessibleBrowseBox( m_xParent, this, m_rBrowseBox );
+        m_xContext = new AccessibleBrowseBox( m_xParent, this, m_rBrowseBox );
 
-    return m_xContext;
+    return m_xContext.get();
 }
 
 
commit 76f81d58ab0cd701182f2d55281546ecd8b08c2c
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Jan 16 15:14:20 2017 +0200

    use rtl::Reference in LngSvcMgr
    
    instead of storing both raw pointers and uno::Reference
    
    Change-Id: Ie403e1e7a081bc3f91fd25be89c54ddc1d1cadd2

diff --git a/linguistic/source/lngsvcmgr.cxx b/linguistic/source/lngsvcmgr.cxx
index 35cc6e7..9a752ae 100644
--- a/linguistic/source/lngsvcmgr.cxx
+++ b/linguistic/source/lngsvcmgr.cxx
@@ -272,8 +272,8 @@ void LngSvcMgrListenerHelper::Timeout()
             static_cast<css::linguistic2::XLinguServiceManager*>(&rMyManager), nCombinedLngSvcEvt );
         nCombinedLngSvcEvt = 0;
 
-        if (rMyManager.pSpellDsp)
-            rMyManager.pSpellDsp->FlushSpellCache();
+        if (rMyManager.mxSpellDsp.is())
+            rMyManager.mxSpellDsp->FlushSpellCache();
 
         // pass event on to linguistic2::XLinguServiceEventListener's
         aLngSvcMgrListeners.notifyEach( &linguistic2::XLinguServiceEventListener::processLinguServiceEvent, aEvtObj );
@@ -340,8 +340,8 @@ void SAL_CALL
     if (0 != (nDlEvt & nHyphenateFlags))
         nLngSvcEvt |= linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN;
 
-    if (rMyManager.pSpellDsp)
-        rMyManager.pSpellDsp->FlushSpellCache();
+    if (rMyManager.mxSpellDsp.is())
+        rMyManager.mxSpellDsp->FlushSpellCache();
     if (nLngSvcEvt)
         LaunchEvent( nLngSvcEvt );
 }
@@ -431,16 +431,10 @@ LngSvcMgr::LngSvcMgr()
 {
     bDisposing = false;
 
-    pSpellDsp   = nullptr;
-    pGrammarDsp = nullptr;
-    pHyphDsp    = nullptr;
-    pThesDsp    = nullptr;
-
     pAvailSpellSvcs     = nullptr;
     pAvailGrammarSvcs   = nullptr;
     pAvailHyphSvcs      = nullptr;
     pAvailThesSvcs      = nullptr;
-    pListenerHelper     = nullptr;
 
     // request notify events when properties (i.e. something in the subtree) changes
     uno::Sequence< OUString > aNames(4);
@@ -508,9 +502,9 @@ IMPL_LINK_NOARG(LngSvcMgr, updateAndBroadcast, Idle *, void)
 
     UpdateAll();
 
-    if (pListenerHelper)
+    if (mxListenerHelper.is())
     {
-        pListenerHelper->AddLngSvcEvt(
+        mxListenerHelper->AddLngSvcEvt(
                 linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN |
                 linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN |
                 linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN |
@@ -845,7 +839,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
                     nLang = LanguageTag::convertToLanguageType( aKeyText );
 
                 GetSpellCheckerDsp_Impl( false );     // don't set service list, it will be done below
-                pSpellDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
+                mxSpellDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
             }
         }
         else if (rName.startsWith( aGrammarCheckerList ))
@@ -870,7 +864,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
                 if (SvtLinguConfig().HasGrammarChecker())
                 {
                     GetGrammarCheckerDsp_Impl( false );   // don't set service list, it will be done below
-                    pGrammarDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
+                    mxGrammarDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
                 }
             }
         }
@@ -894,7 +888,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
                     nLang = LanguageTag::convertToLanguageType( aKeyText );
 
                 GetHyphenatorDsp_Impl( false );   // don't set service list, it will be done below
-                pHyphDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
+                mxHyphDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
             }
         }
         else if (rName.startsWith( aThesaurusList ))
@@ -917,7 +911,7 @@ void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
                     nLang = LanguageTag::convertToLanguageType( aKeyText );
 
                 GetThesaurusDsp_Impl( false );  // don't set service list, it will be done below
-                pThesDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
+                mxThesDsp->SetServiceList( LanguageTag::convertToLocale(nLang), aSvcImplNames );
             }
         }
         else
@@ -938,29 +932,27 @@ void LngSvcMgr::ImplCommit()
 
 void LngSvcMgr::GetListenerHelper_Impl()
 {
-    if (!pListenerHelper)
+    if (!mxListenerHelper.is())
     {
-        pListenerHelper = new LngSvcMgrListenerHelper( *this, linguistic::GetDictionaryList() );
-        xListenerHelper = static_cast<linguistic2::XLinguServiceEventListener *>(pListenerHelper);
+        mxListenerHelper = new LngSvcMgrListenerHelper( *this, linguistic::GetDictionaryList() );
     }
 }
 
 
 void LngSvcMgr::GetSpellCheckerDsp_Impl( bool bSetSvcList )
 {
-    if (!pSpellDsp)
+    if (!mxSpellDsp.is())
     {
-        pSpellDsp   = new SpellCheckerDispatcher( *this );
-        xSpellDsp   = pSpellDsp;
+        mxSpellDsp = new SpellCheckerDispatcher( *this );
         if (bSetSvcList)
-            SetCfgServiceLists( *pSpellDsp );
+            SetCfgServiceLists( *mxSpellDsp );
     }
 }
 
 
 void LngSvcMgr::GetGrammarCheckerDsp_Impl( bool bSetSvcList  )
 {
-    if (!pGrammarDsp && SvtLinguConfig().HasGrammarChecker())
+    if (!mxGrammarDsp.is() && SvtLinguConfig().HasGrammarChecker())
     {
         //! since the grammar checking iterator needs to be a one instance service
         //! we need to create it the correct way!
@@ -976,11 +968,10 @@ void LngSvcMgr::GetGrammarCheckerDsp_Impl( bool bSetSvcList  )
 
         if (xGCI.is())
         {
-            pGrammarDsp    = dynamic_cast< GrammarCheckingIterator * >(xGCI.get());
-            xGrammarDsp    = xGCI;
-            SAL_WARN_IF( pGrammarDsp == nullptr, "linguistic", "failed to get implementation" );
-            if (bSetSvcList && pGrammarDsp)
-                SetCfgServiceLists( *pGrammarDsp );
+            mxGrammarDsp = dynamic_cast< GrammarCheckingIterator * >(xGCI.get());
+            SAL_WARN_IF( mxGrammarDsp == nullptr, "linguistic", "failed to get implementation" );
+            if (bSetSvcList && mxGrammarDsp.is())
+                SetCfgServiceLists( *mxGrammarDsp );
         }
     }
 }
@@ -988,24 +979,22 @@ void LngSvcMgr::GetGrammarCheckerDsp_Impl( bool bSetSvcList  )
 
 void LngSvcMgr::GetHyphenatorDsp_Impl( bool bSetSvcList  )
 {
-    if (!pHyphDsp)
+    if (!mxHyphDsp.is())
     {
-        pHyphDsp    = new HyphenatorDispatcher( *this );
-        xHyphDsp    = pHyphDsp;
+        mxHyphDsp = new HyphenatorDispatcher( *this );
         if (bSetSvcList)
-            SetCfgServiceLists( *pHyphDsp );
+            SetCfgServiceLists( *mxHyphDsp );
     }
 }
 
 
 void LngSvcMgr::GetThesaurusDsp_Impl( bool bSetSvcList  )
 {
-    if (!pThesDsp)
+    if (!mxThesDsp.is())
     {
-        pThesDsp    = new ThesaurusDispatcher;
-        xThesDsp    = pThesDsp;
+        mxThesDsp = new ThesaurusDispatcher;
         if (bSetSvcList)
-            SetCfgServiceLists( *pThesDsp );
+            SetCfgServiceLists( *mxThesDsp );
     }
 }
 
@@ -1429,9 +1418,9 @@ uno::Reference< linguistic2::XSpellChecker > SAL_CALL
     uno::Reference< linguistic2::XSpellChecker > xRes;
     if (!bDisposing)
     {
-        if (!xSpellDsp.is())
+        if (!mxSpellDsp.is())
             GetSpellCheckerDsp_Impl();
-        xRes = xSpellDsp;
+        xRes = mxSpellDsp.get();
     }
     return xRes;
 }
@@ -1448,9 +1437,9 @@ uno::Reference< linguistic2::XHyphenator > SAL_CALL
     uno::Reference< linguistic2::XHyphenator >   xRes;
     if (!bDisposing)
     {
-        if (!xHyphDsp.is())
+        if (!mxHyphDsp.is())
             GetHyphenatorDsp_Impl();
-        xRes = xHyphDsp;
+        xRes = mxHyphDsp.get();
     }
     return xRes;
 }
@@ -1467,9 +1456,9 @@ uno::Reference< linguistic2::XThesaurus > SAL_CALL
     uno::Reference< linguistic2::XThesaurus >    xRes;
     if (!bDisposing)
     {
-        if (!xThesDsp.is())
+        if (!mxThesDsp.is())
             GetThesaurusDsp_Impl();
-        xRes = xThesDsp;
+        xRes = mxThesDsp.get();
     }
     return xRes;
 }
@@ -1485,9 +1474,9 @@ sal_Bool SAL_CALL
     bool bRes = false;
     if (!bDisposing  &&  xListener.is())
     {
-        if (!pListenerHelper)
+        if (!mxListenerHelper.is())
             GetListenerHelper_Impl();
-        bRes = pListenerHelper->AddLngSvcMgrListener( xListener );
+        bRes = mxListenerHelper->AddLngSvcMgrListener( xListener );
     }
     return bRes;
 }
@@ -1503,10 +1492,10 @@ sal_Bool SAL_CALL
     bool bRes = false;
     if (!bDisposing  &&  xListener.is())
     {
-        DBG_ASSERT( pListenerHelper, "listener removed without being added" );
-        if (!pListenerHelper)
+        DBG_ASSERT( mxListenerHelper.is(), "listener removed without being added" );
+        if (!mxListenerHelper.is())
             GetListenerHelper_Impl();
-        bRes = pListenerHelper->RemoveLngSvcMgrListener( xListener );
+        bRes = mxListenerHelper->RemoveLngSvcMgrListener( xListener );
     }
     return bRes;
 }
@@ -1642,62 +1631,62 @@ void SAL_CALL
     {
         if (rServiceName == SN_SPELLCHECKER)
         {
-            if (!xSpellDsp.is())
+            if (!mxSpellDsp.is())
                 GetSpellCheckerDsp_Impl();
             bool bChanged = !IsEqSvcList( rServiceImplNames,
-                                          pSpellDsp->GetServiceList( rLocale ) );
+                                          mxSpellDsp->GetServiceList( rLocale ) );
             if (bChanged)
             {
-                pSpellDsp->SetServiceList( rLocale, rServiceImplNames );
+                mxSpellDsp->SetServiceList( rLocale, rServiceImplNames );
                 SaveCfgSvcs( SN_SPELLCHECKER );
 
-                if (pListenerHelper  &&  bChanged)
-                    pListenerHelper->AddLngSvcEvt(
+                if (mxListenerHelper.is() && bChanged)
+                    mxListenerHelper->AddLngSvcEvt(
                             linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN |
                             linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN );
             }
         }
         else if (rServiceName == SN_GRAMMARCHECKER)
         {
-            if (!xGrammarDsp.is())
+            if (!mxGrammarDsp.is())
                 GetGrammarCheckerDsp_Impl();
             bool bChanged = !IsEqSvcList( rServiceImplNames,
-                                          pGrammarDsp->GetServiceList( rLocale ) );
+                                          mxGrammarDsp->GetServiceList( rLocale ) );
             if (bChanged)
             {
-                pGrammarDsp->SetServiceList( rLocale, rServiceImplNames );
+                mxGrammarDsp->SetServiceList( rLocale, rServiceImplNames );
                 SaveCfgSvcs( SN_GRAMMARCHECKER );
 
-                if (pListenerHelper  &&  bChanged)
-                    pListenerHelper->AddLngSvcEvt(
+                if (mxListenerHelper.is() && bChanged)
+                    mxListenerHelper->AddLngSvcEvt(
                             linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN );
             }
         }
         else if (rServiceName == SN_HYPHENATOR)
         {
-            if (!xHyphDsp.is())
+            if (!mxHyphDsp.is())
                 GetHyphenatorDsp_Impl();
             bool bChanged = !IsEqSvcList( rServiceImplNames,
-                                          pHyphDsp->GetServiceList( rLocale ) );
+                                          mxHyphDsp->GetServiceList( rLocale ) );
             if (bChanged)
             {
-                pHyphDsp->SetServiceList( rLocale, rServiceImplNames );
+                mxHyphDsp->SetServiceList( rLocale, rServiceImplNames );
                 SaveCfgSvcs( SN_HYPHENATOR );
 
-                if (pListenerHelper  &&  bChanged)
-                    pListenerHelper->AddLngSvcEvt(
+                if (mxListenerHelper.is() && bChanged)
+                    mxListenerHelper->AddLngSvcEvt(
                             linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN );
             }
         }
         else if (rServiceName == SN_THESAURUS)
         {
-            if (!xThesDsp.is())
+            if (!mxThesDsp.is())
                 GetThesaurusDsp_Impl();
             bool bChanged = !IsEqSvcList( rServiceImplNames,
-                                          pThesDsp->GetServiceList( rLocale ) );
+                                          mxThesDsp->GetServiceList( rLocale ) );
             if (bChanged)
             {
-                pThesDsp->SetServiceList( rLocale, rServiceImplNames );
+                mxThesDsp->SetServiceList( rLocale, rServiceImplNames );
                 SaveCfgSvcs( SN_THESAURUS );
             }
         }
@@ -1716,30 +1705,30 @@ bool LngSvcMgr::SaveCfgSvcs( const OUString &rServiceName )
 
     if (rServiceName == SN_SPELLCHECKER)
     {
-        if (!pSpellDsp)
+        if (!mxSpellDsp.get())
             GetSpellCheckerDsp_Impl();
-        pDsp = pSpellDsp;
+        pDsp = mxSpellDsp.get();
         aLocales = getAvailableLocales( SN_SPELLCHECKER );
     }
     else if (rServiceName == SN_GRAMMARCHECKER)
     {
-        if (!pGrammarDsp)
+        if (!mxGrammarDsp.is())
             GetGrammarCheckerDsp_Impl();
-        pDsp = pGrammarDsp;
+        pDsp = mxGrammarDsp.get();
         aLocales = getAvailableLocales( SN_GRAMMARCHECKER );
     }
     else if (rServiceName == SN_HYPHENATOR)
     {
-        if (!pHyphDsp)
+        if (!mxHyphDsp.is())
             GetHyphenatorDsp_Impl();
-        pDsp = pHyphDsp;
+        pDsp = mxHyphDsp.get();
         aLocales = getAvailableLocales( SN_HYPHENATOR );
     }
     else if (rServiceName == SN_THESAURUS)
     {
-        if (!pThesDsp)
+        if (!mxThesDsp.is())
             GetThesaurusDsp_Impl();
-        pDsp = pThesDsp;
+        pDsp = mxThesDsp.get();
         aLocales = getAvailableLocales( SN_THESAURUS );
     }
 
@@ -1754,13 +1743,13 @@ bool LngSvcMgr::SaveCfgSvcs( const OUString &rServiceName )
 
         // get node name to be used
         const char *pNodeName = nullptr;
-        if (pDsp == pSpellDsp)
+        if (pDsp == mxSpellDsp.get())
             pNodeName = "ServiceManager/SpellCheckerList";
-        else if (pDsp == pGrammarDsp)
+        else if (pDsp == mxGrammarDsp.get())
             pNodeName = "ServiceManager/GrammarCheckerList";
-        else if (pDsp == pHyphDsp)
+        else if (pDsp == mxHyphDsp.get())
             pNodeName = "ServiceManager/HyphenatorList";
-        else if (pDsp == pThesDsp)
+        else if (pDsp == mxThesDsp.get())
             pNodeName = "ServiceManager/ThesaurusList";
         else
         {
@@ -1775,7 +1764,7 @@ bool LngSvcMgr::SaveCfgSvcs( const OUString &rServiceName )
 
             // build value to be written back to configuration
             uno::Any aCfgAny;
-            if ((pDsp == pHyphDsp || pDsp == pGrammarDsp) && aSvcImplNames.getLength() > 1)
+            if ((pDsp == mxHyphDsp.get() || pDsp == mxGrammarDsp.get()) && aSvcImplNames.getLength() > 1)
                 aSvcImplNames.realloc(1);   // there should be only one entry for hyphenators or grammar checkers (because they are not chained)
             aCfgAny <<= aSvcImplNames;
             DBG_ASSERT( aCfgAny.hasValue(), "missing value for 'Any' type" );
@@ -1936,8 +1925,8 @@ void SAL_CALL
         lang::EventObject aEvtObj( static_cast<XLinguServiceManager*>(this) );
         aEvtListeners.disposeAndClear( aEvtObj );
 
-        if (pListenerHelper)
-            pListenerHelper->DisposeAndClear( aEvtObj );
+        if (mxListenerHelper.is())
+            mxListenerHelper->DisposeAndClear( aEvtObj );
     }
 }
 
@@ -1976,9 +1965,9 @@ bool LngSvcMgr::AddLngSvcEvtBroadcaster(
     bool bRes = false;
     if (rxBroadcaster.is())
     {
-        if (!pListenerHelper)
+        if (!mxListenerHelper.is())
             GetListenerHelper_Impl();
-        bRes = pListenerHelper->AddLngSvcEvtBroadcaster( rxBroadcaster );
+        bRes = mxListenerHelper->AddLngSvcEvtBroadcaster( rxBroadcaster );
     }
     return bRes;
 }
diff --git a/linguistic/source/lngsvcmgr.hxx b/linguistic/source/lngsvcmgr.hxx
index 493e6dd..348ca09 100644
--- a/linguistic/source/lngsvcmgr.hxx
+++ b/linguistic/source/lngsvcmgr.hxx
@@ -30,6 +30,7 @@
 #include <com/sun/star/util/XModifyBroadcaster.hpp>
 #include <com/sun/star/util/XModifyListener.hpp>
 #include <unotools/configitem.hxx>
+#include <rtl/ref.hxx>
 #include <vcl/timer.hxx>
 #include <vcl/idle.hxx>
 #include <vector>
@@ -65,19 +66,7 @@ class LngSvcMgr :
 {
     friend class LngSvcMgrListenerHelper;
 
-    ::comphelper::OInterfaceContainerHelper2                   aEvtListeners;
-
-    css::uno::Reference<
-        css::linguistic2::XSpellChecker >              xSpellDsp;
-    css::uno::Reference<
-        css::linguistic2::XProofreadingIterator >      xGrammarDsp;
-    css::uno::Reference<
-        css::linguistic2::XHyphenator >                xHyphDsp;
-    css::uno::Reference<
-        css::linguistic2::XThesaurus >                 xThesDsp;
-
-    css::uno::Reference<
-        css::lang::XEventListener >                    xListenerHelper;
+    ::comphelper::OInterfaceContainerHelper2            aEvtListeners;
 
     css::uno::Reference<
         css::util::XModifyBroadcaster>                  xMB;
@@ -94,12 +83,12 @@ class LngSvcMgr :
     css::uno::Sequence<
         css::lang::Locale >                             aAvailThesLocales;
 
-    SpellCheckerDispatcher *                            pSpellDsp;
-    GrammarCheckingIterator *                           pGrammarDsp;
-    HyphenatorDispatcher *                              pHyphDsp;
-    ThesaurusDispatcher *                               pThesDsp;
+    rtl::Reference<SpellCheckerDispatcher>              mxSpellDsp;
+    rtl::Reference<GrammarCheckingIterator>             mxGrammarDsp;
+    rtl::Reference<HyphenatorDispatcher>                mxHyphDsp;
+    rtl::Reference<ThesaurusDispatcher>                 mxThesDsp;
 
-    LngSvcMgrListenerHelper *                           pListenerHelper;
+    rtl::Reference<LngSvcMgrListenerHelper>             mxListenerHelper;
 
     typedef std::vector< std::unique_ptr<SvcInfo> >    SvcInfoArray;
     SvcInfoArray *                                      pAvailSpellSvcs;
commit e4d362017ecd6076ab9fd13d9c6b2c5137580500
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Jan 16 15:04:38 2017 +0200

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

diff --git a/linguistic/inc/iprcache.hxx b/linguistic/inc/iprcache.hxx
index f37f3af..b311511 100644
--- a/linguistic/inc/iprcache.hxx
+++ b/linguistic/inc/iprcache.hxx
@@ -30,6 +30,7 @@
 #include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
 #include <com/sun/star/linguistic2/XLinguProperties.hpp>
 
+#include <rtl/ref.hxx>
 #include <rtl/string.hxx>
 #include <i18nlangtag/lang.h>
 
@@ -75,12 +76,10 @@ public:
 
 class SpellCache final
 {
-    css::uno::Reference< css::linguistic2::XDictionaryListEventListener >
-                        xFlushLstnr;
-    FlushListener      *pFlushLstnr;
+    rtl::Reference<FlushListener>  mxFlushLstnr;
 
-    typedef std::set< OUString >             WordList_t;
-    typedef std::map< LanguageType, WordList_t >    LangWordList_t;
+    typedef std::set< OUString >                  WordList_t;
+    typedef std::map< LanguageType, WordList_t >  LangWordList_t;
     LangWordList_t  aWordLists;
 
     SpellCache(const SpellCache &) = delete;
diff --git a/linguistic/source/iprcache.cxx b/linguistic/source/iprcache.cxx
index fbcbb44..e7989b2 100644
--- a/linguistic/source/iprcache.cxx
+++ b/linguistic/source/iprcache.cxx
@@ -189,20 +189,19 @@ void SAL_CALL FlushListener::propertyChange(
 
 SpellCache::SpellCache()
 {
-    pFlushLstnr = new FlushListener( *this );
-    xFlushLstnr = pFlushLstnr;
+    mxFlushLstnr = new FlushListener( *this );
     Reference<XSearchableDictionaryList> aDictionaryList(GetDictionaryList());
-    pFlushLstnr->SetDicList( aDictionaryList ); //! after reference is established
+    mxFlushLstnr->SetDicList( aDictionaryList ); //! after reference is established
     Reference<XLinguProperties> aPropertySet(GetLinguProperties());
-    pFlushLstnr->SetPropSet( aPropertySet );    //! after reference is established
+    mxFlushLstnr->SetPropSet( aPropertySet );    //! after reference is established
 }
 
 SpellCache::~SpellCache()
 {
     Reference<XSearchableDictionaryList>  aEmptyList;
     Reference<XLinguProperties>     aEmptySet;
-    pFlushLstnr->SetDicList( aEmptyList );
-    pFlushLstnr->SetPropSet( aEmptySet );
+    mxFlushLstnr->SetDicList( aEmptyList );
+    mxFlushLstnr->SetPropSet( aEmptySet );
 }
 
 void SpellCache::Flush()
commit 034cb09f56fba58ccc53acb88681e1f0b812156a
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Jan 16 14:56:48 2017 +0200

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

diff --git a/include/xmloff/xmlexp.hxx b/include/xmloff/xmlexp.hxx
index 96a1ded..7fbcb41 100644
--- a/include/xmloff/xmlexp.hxx
+++ b/include/xmloff/xmlexp.hxx
@@ -131,8 +131,7 @@ class XMLOFF_DLLPUBLIC SvXMLExport : public cppu::WeakImplHelper<
     css::uno::Reference< css::beans::XPropertySet > mxExportInfo;
     css::uno::Reference< css::lang::XEventListener > mxEventListener;
 
-    SvXMLAttributeList          *mpAttrList;        // a common attribute list
-    css::uno::Reference< css::xml::sax::XAttributeList >          mxAttrList;     // and an interface of it
+    rtl::Reference<SvXMLAttributeList>          mxAttrList;        // a common attribute list
 
     OUString     msOrigFileName; // the original URL
     OUString     msGraphicObjectProtocol;
@@ -377,8 +376,8 @@ public:
                                   css::xml::sax::XAttributeList >& xAttrList );
 
     // Get common attribute list as implementation or interface.
-    SvXMLAttributeList &GetAttrList() { return *mpAttrList; }
-    const css::uno::Reference< css::xml::sax::XAttributeList > & GetXAttrList() { return mxAttrList; }
+    SvXMLAttributeList &GetAttrList() { return *mxAttrList.get(); }
+    css::uno::Reference< css::xml::sax::XAttributeList > GetXAttrList() { return mxAttrList.get(); }
 
     // Get document handler. This methods are not const, because the
     // reference allowes modifications through the handler.
diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx
index b46af12..3666cfa 100644
--- a/xmloff/source/core/xmlexp.cxx
+++ b/xmloff/source/core/xmlexp.cxx
@@ -393,8 +393,6 @@ void SvXMLExport::InitCtor_()
             GetXMLToken(XML_NP_CSS3TEXT), GetXMLToken(XML_N_CSS3TEXT), XML_NAMESPACE_CSS3TEXT );
     }
 
-    mxAttrList = static_cast<xml::sax::XAttributeList*>(mpAttrList);
-
     msGraphicObjectProtocol = "vnd.sun.star.GraphicObject:";
     msEmbeddedObjectProtocol = "vnd.sun.star.EmbeddedObject:";
 
@@ -434,7 +432,7 @@ SvXMLExport::SvXMLExport(
     const enum XMLTokenEnum eClass, SvXMLExportFlags nExportFlags )
 :   mpImpl( new SvXMLExport_Impl ),
     m_xContext(xContext), m_implementationName(implementationName),
-    mpAttrList( new SvXMLAttributeList ),
+    mxAttrList( new SvXMLAttributeList ),
     mpNamespaceMap( new SvXMLNamespaceMap ),
     mpUnitConv( new SvXMLUnitConverter( xContext,
                 util::MeasureUnit::MM_100TH, eDefaultMeasureUnit) ),
@@ -463,7 +461,7 @@ SvXMLExport::SvXMLExport(
     m_xContext(xContext), m_implementationName(implementationName),
     mxHandler( rHandler ),
     mxExtHandler( rHandler, uno::UNO_QUERY ),
-    mpAttrList( new SvXMLAttributeList ),
+    mxAttrList( new SvXMLAttributeList ),
     msOrigFileName( rFileName ),
     mpNamespaceMap( new SvXMLNamespaceMap ),
     mpUnitConv( new SvXMLUnitConverter( xContext,
@@ -500,7 +498,7 @@ SvXMLExport::SvXMLExport(
     mxHandler( rHandler ),
     mxExtHandler( rHandler, uno::UNO_QUERY ),
     mxNumberFormatsSupplier (rModel, uno::UNO_QUERY),
-    mpAttrList( new SvXMLAttributeList ),
+    mxAttrList( new SvXMLAttributeList ),
     msOrigFileName( rFileName ),
     mpNamespaceMap( new SvXMLNamespaceMap ),
     mpUnitConv( new SvXMLUnitConverter( xContext,
@@ -945,7 +943,7 @@ void SvXMLExport::AddAttributeASCII( sal_uInt16 nPrefixKey,
     OUString sName( OUString::createFromAscii( pName ) );
     OUString sValue( OUString::createFromAscii( pValue ) );
 
-    mpAttrList->AddAttribute(
+    mxAttrList->AddAttribute(
         GetNamespaceMap_().GetQNameByKey( nPrefixKey, sName ), sValue );
 }
 
@@ -954,14 +952,14 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, const sal_Char *pName,
 {
     OUString sName( OUString::createFromAscii( pName ) );
 
-    mpAttrList->AddAttribute(
+    mxAttrList->AddAttribute(
         GetNamespaceMap_().GetQNameByKey( nPrefixKey, sName ), rValue );
 }
 
 void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey, const OUString& rName,
                               const OUString& rValue )
 {
-    mpAttrList->AddAttribute(
+    mxAttrList->AddAttribute(
         GetNamespaceMap_().GetQNameByKey( nPrefixKey, rName ), rValue );
 }
 
@@ -969,7 +967,7 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey,
                                 enum XMLTokenEnum eName,
                                 const OUString& rValue )
 {
-    mpAttrList->AddAttribute(
+    mxAttrList->AddAttribute(
         GetNamespaceMap_().GetQNameByKey( nPrefixKey, GetXMLToken(eName) ),
         rValue );
 }
@@ -978,7 +976,7 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey,
                                 enum XMLTokenEnum eName,
                                 enum XMLTokenEnum eValue)
 {
-    mpAttrList->AddAttribute(
+    mxAttrList->AddAttribute(
         GetNamespaceMap_().GetQNameByKey( nPrefixKey, GetXMLToken(eName) ),
         GetXMLToken(eValue) );
 }
@@ -986,7 +984,7 @@ void SvXMLExport::AddAttribute( sal_uInt16 nPrefixKey,
 void SvXMLExport::AddAttribute( const OUString& rQName,
                                 const OUString& rValue )
 {
-      mpAttrList->AddAttribute(
+      mxAttrList->AddAttribute(
         rQName,
         rValue );
 }
@@ -994,7 +992,7 @@ void SvXMLExport::AddAttribute( const OUString& rQName,
 void SvXMLExport::AddAttribute( const OUString& rQName,
                                 enum ::xmloff::token::XMLTokenEnum eValue )
 {
-      mpAttrList->AddAttribute(
+      mxAttrList->AddAttribute(
         rQName,
         GetXMLToken(eValue) );
 }
@@ -1061,18 +1059,18 @@ void SvXMLExport::AddLanguageTagAttributes( sal_uInt16 nPrefix, sal_uInt16 nPref
 void SvXMLExport::AddAttributeList( const uno::Reference< xml::sax::XAttributeList >& xAttrList )
 {
     if( xAttrList.is())
-        mpAttrList->AppendAttributeList( xAttrList );
+        mxAttrList->AppendAttributeList( xAttrList );
 }
 
 void SvXMLExport::ClearAttrList()
 {
-    mpAttrList->Clear();
+    mxAttrList->Clear();
 }
 
 #ifdef DBG_UTIL
 void SvXMLExport::CheckAttrList()
 {
-    SAL_WARN_IF( mpAttrList->getLength(), "xmloff.core", "XMLExport::CheckAttrList: list is not empty" );
+    SAL_WARN_IF( mxAttrList->getLength(), "xmloff.core", "XMLExport::CheckAttrList: list is not empty" );
 }
 #endif
 
@@ -1350,7 +1348,7 @@ sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass )
     sal_uInt16 nPos = mpNamespaceMap->GetFirstKey();
     while( USHRT_MAX != nPos )
     {
-        mpAttrList->AddAttribute( mpNamespaceMap->GetAttrNameByKey( nPos ),
+        mxAttrList->AddAttribute( mpNamespaceMap->GetAttrNameByKey( nPos ),
                                   mpNamespaceMap->GetNameByKey( nPos ) );
         nPos = mpNamespaceMap->GetNextKey( nPos );
     }
commit 2796150fdcc340be6b3dba19fc9c5734c21e0e6e
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Jan 16 14:47:13 2017 +0200

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

diff --git a/vcl/unx/generic/dtrans/X11_droptarget.cxx b/vcl/unx/generic/dtrans/X11_droptarget.cxx
index b6892eb..3915d8e 100644
--- a/vcl/unx/generic/dtrans/X11_droptarget.cxx
+++ b/vcl/unx/generic/dtrans/X11_droptarget.cxx
@@ -35,15 +35,14 @@ DropTarget::DropTarget() :
         >( m_aMutex ),
     m_bActive( false ),
     m_nDefaultActions( 0 ),
-    m_aTargetWindow( None ),
-    m_pSelectionManager( nullptr )
+    m_aTargetWindow( None )
 {
 }
 
 DropTarget::~DropTarget()
 {
-    if( m_pSelectionManager )
-        m_pSelectionManager->deregisterDropTarget( m_aTargetWindow );
+    if( m_xSelectionManager.is() )
+        m_xSelectionManager->deregisterDropTarget( m_aTargetWindow );
 }
 
 void DropTarget::initialize( const Sequence< Any >& arguments ) throw( css::uno::Exception, std::exception )
@@ -59,15 +58,14 @@ void DropTarget::initialize( const Sequence< Any >& arguments ) throw( css::uno:
             aIdentifier >>= aDisplayName;
         }
 
-        m_pSelectionManager = &SelectionManager::get( aDisplayName );
-        m_xSelectionManager = static_cast< XDragSource* >(m_pSelectionManager);
-        m_pSelectionManager->initialize( arguments );
+        m_xSelectionManager = &SelectionManager::get( aDisplayName );
+        m_xSelectionManager->initialize( arguments );
 
-        if( m_pSelectionManager->getDisplay() ) // #136582# sanity check
+        if( m_xSelectionManager->getDisplay() ) // #136582# sanity check
         {
             sal_IntPtr aWindow = None;
             arguments.getConstArray()[1] >>= aWindow;
-            m_pSelectionManager->registerDropTarget( aWindow, this );
+            m_xSelectionManager->registerDropTarget( aWindow, this );
             m_aTargetWindow = aWindow;
             m_bActive = true;
         }
diff --git a/vcl/unx/generic/dtrans/X11_selection.hxx b/vcl/unx/generic/dtrans/X11_selection.hxx
index ec46b32..24de1bc 100644
--- a/vcl/unx/generic/dtrans/X11_selection.hxx
+++ b/vcl/unx/generic/dtrans/X11_selection.hxx
@@ -31,8 +31,8 @@
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/frame/XDesktop2.hpp>
 #include <osl/thread.h>
-
 #include <osl/conditn.hxx>
+#include <rtl/ref.hxx>
 
 #include <list>
 #include <unordered_map>
@@ -75,11 +75,10 @@ namespace x11 {
         bool                        m_bActive;
         sal_Int8                    m_nDefaultActions;
         ::Window                    m_aTargetWindow;
-        SelectionManager*           m_pSelectionManager;
-        css::uno::Reference< css::datatransfer::dnd::XDragSource >
+        rtl::Reference<SelectionManager>
                                     m_xSelectionManager;
         ::std::list< css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > >
-                            m_aListeners;
+                                    m_aListeners;
 
         DropTarget();
         virtual ~DropTarget() override;


More information about the Libreoffice-commits mailing list