comphelper/source/container/enumhelper.cxx |   28 ++++++++++++----------------
 include/comphelper/enumhelper.hxx          |   23 ++++++++++-------------
 2 files changed, 22 insertions(+), 29 deletions(-)

New commits:
commit b439832fc36a05e4423f480f7a312428f2449cc6
Author:     Arnaud Versini <arnaud.vers...@libreoffice.org>
AuthorDate: Sun Oct 24 19:41:36 2021 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Thu Nov 4 20:23:25 2021 +0100

    comphelper : use std::mutex in enumhelper
    
    Change-Id: I871c406e8ff94e646545cb82e0d1e2e2ec80c6e9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124125
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/comphelper/source/container/enumhelper.cxx 
b/comphelper/source/container/enumhelper.cxx
index edcb03c669cc..2487d3adf234 100644
--- a/comphelper/source/container/enumhelper.cxx
+++ b/comphelper/source/container/enumhelper.cxx
@@ -48,13 +48,15 @@ OEnumerationByName::OEnumerationByName(const 
css::uno::Reference<css::container:
 
 OEnumerationByName::~OEnumerationByName()
 {
+    std::lock_guard aLock(m_aLock);
+
     impl_stopDisposeListening();
 }
 
 
 sal_Bool SAL_CALL OEnumerationByName::hasMoreElements(  )
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     if (m_xAccess.is() && m_aNames.getLength() > m_nPos)
         return true;
@@ -71,7 +73,7 @@ sal_Bool SAL_CALL OEnumerationByName::hasMoreElements(  )
 
 css::uno::Any SAL_CALL OEnumerationByName::nextElement(  )
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     css::uno::Any aRes;
     if (m_xAccess.is() && m_nPos < m_aNames.getLength())
@@ -92,7 +94,7 @@ css::uno::Any SAL_CALL OEnumerationByName::nextElement(  )
 
 void SAL_CALL OEnumerationByName::disposing(const css::lang::EventObject& 
aEvent)
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     if (aEvent.Source == m_xAccess)
         m_xAccess.clear();
@@ -101,8 +103,6 @@ void SAL_CALL OEnumerationByName::disposing(const 
css::lang::EventObject& aEvent
 
 void OEnumerationByName::impl_startDisposeListening()
 {
-    osl::MutexGuard aLock(m_aLock);
-
     if (m_bListening)
         return;
 
@@ -119,8 +119,6 @@ void OEnumerationByName::impl_startDisposeListening()
 
 void OEnumerationByName::impl_stopDisposeListening()
 {
-    osl::MutexGuard aLock(m_aLock);
-
     if (!m_bListening)
         return;
 
@@ -145,13 +143,15 @@ OEnumerationByIndex::OEnumerationByIndex(const 
css::uno::Reference< css::contain
 
 OEnumerationByIndex::~OEnumerationByIndex()
 {
+    std::lock_guard aLock(m_aLock);
+
     impl_stopDisposeListening();
 }
 
 
 sal_Bool SAL_CALL OEnumerationByIndex::hasMoreElements(  )
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     if (m_xAccess.is() && m_xAccess->getCount() > m_nPos)
         return true;
@@ -168,7 +168,7 @@ sal_Bool SAL_CALL OEnumerationByIndex::hasMoreElements(  )
 
 css::uno::Any SAL_CALL OEnumerationByIndex::nextElement(  )
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     css::uno::Any aRes;
     if (m_xAccess.is() && m_nPos < m_xAccess->getCount())
@@ -188,7 +188,7 @@ css::uno::Any SAL_CALL OEnumerationByIndex::nextElement(  )
 
 void SAL_CALL OEnumerationByIndex::disposing(const css::lang::EventObject& 
aEvent)
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     if (aEvent.Source == m_xAccess)
         m_xAccess.clear();
@@ -197,8 +197,6 @@ void SAL_CALL OEnumerationByIndex::disposing(const 
css::lang::EventObject& aEven
 
 void OEnumerationByIndex::impl_startDisposeListening()
 {
-    osl::MutexGuard aLock(m_aLock);
-
     if (m_bListening)
         return;
 
@@ -215,8 +213,6 @@ void OEnumerationByIndex::impl_startDisposeListening()
 
 void OEnumerationByIndex::impl_stopDisposeListening()
 {
-    osl::MutexGuard aLock(m_aLock);
-
     if (!m_bListening)
         return;
 
@@ -244,7 +240,7 @@ OAnyEnumeration::~OAnyEnumeration()
 
 sal_Bool SAL_CALL OAnyEnumeration::hasMoreElements(  )
 {
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
 
     return (m_lItems.getLength() > m_nPos);
 }
@@ -255,7 +251,7 @@ css::uno::Any SAL_CALL OAnyEnumeration::nextElement(  )
     if ( ! hasMoreElements())
         throw css::container::NoSuchElementException();
 
-    osl::MutexGuard aLock(m_aLock);
+    std::lock_guard aLock(m_aLock);
     sal_Int32 nPos = m_nPos;
     ++m_nPos;
     return m_lItems[nPos];
diff --git a/include/comphelper/enumhelper.hxx 
b/include/comphelper/enumhelper.hxx
index 5e5e000d78df..52f3aa743ade 100644
--- a/include/comphelper/enumhelper.hxx
+++ b/include/comphelper/enumhelper.hxx
@@ -23,7 +23,7 @@
 #include <com/sun/star/container/XEnumeration.hpp>
 #include <com/sun/star/lang/XEventListener.hpp>
 #include <cppuhelper/implbase.hxx>
-#include <osl/mutex.hxx>
+#include <mutex>
 #include <comphelper/comphelperdllapi.h>
 
 namespace com::sun::star::container { class XIndexAccess; }
@@ -32,23 +32,18 @@ namespace com::sun::star::container { class XNameAccess; }
 namespace comphelper
 {
 
-struct OEnumerationLock
-{
-    public:
-        ::osl::Mutex m_aLock;
-};
-
 /** provides a com.sun.star.container::XEnumeration access based
     on an object implementing the com.sun.star.container::XNameAccess interface
 */
-class COMPHELPER_DLLPUBLIC OEnumerationByName final : private OEnumerationLock
-                         , public ::cppu::WeakImplHelper< 
css::container::XEnumeration ,
+class COMPHELPER_DLLPUBLIC OEnumerationByName final :
+                         public ::cppu::WeakImplHelper< 
css::container::XEnumeration ,
                                                           
css::lang::XEventListener    >
 {
     css::uno::Sequence< OUString > const                m_aNames;
     css::uno::Reference< css::container::XNameAccess >  m_xAccess;
     sal_Int32                                           m_nPos;
     bool                                                m_bListening;
+    std::mutex m_aLock;
 
 public:
     OEnumerationByName(const css::uno::Reference< css::container::XNameAccess 
>& _rxAccess);
@@ -69,13 +64,14 @@ private:
 /** provides a com.sun.star.container::XEnumeration access based
     on an object implementing the com.sun.star.container::XNameAccess interface
 */
-class COMPHELPER_DLLPUBLIC OEnumerationByIndex final : private OEnumerationLock
-                          , public ::cppu::WeakImplHelper< 
css::container::XEnumeration ,
+class COMPHELPER_DLLPUBLIC OEnumerationByIndex final :
+                          public ::cppu::WeakImplHelper< 
css::container::XEnumeration ,
                                                            
css::lang::XEventListener    >
 {
     css::uno::Reference< css::container::XIndexAccess > m_xAccess;
     sal_Int32                                         m_nPos;
     bool                                          m_bListening;
+    std::mutex m_aLock;
 
 public:
     OEnumerationByIndex(const css::uno::Reference< 
css::container::XIndexAccess >& _rxAccess);
@@ -99,11 +95,12 @@ class SAL_DLLPUBLIC_TEMPLATE OAnyEnumeration_BASE
     for an outside set vector of Any's.
 
 */
-class COMPHELPER_DLLPUBLIC OAnyEnumeration final : private OEnumerationLock
-                                           , public OAnyEnumeration_BASE
+class COMPHELPER_DLLPUBLIC OAnyEnumeration final :
+                                           public OAnyEnumeration_BASE
 {
     sal_Int32                         m_nPos;
     css::uno::Sequence< css::uno::Any > m_lItems;
+    std::mutex m_aLock;
 
 public:
     OAnyEnumeration(const css::uno::Sequence< css::uno::Any >& lItems);

Reply via email to