From 3bb8bdb93f1546f64ff3f183d6162c41a03856bf Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Thu, 19 Jan 2017 16:02:25 +0200 Subject: [PATCH] use rtl::Reference in OContainerListener instead of manual acquire/release Change-Id: I83e6229029e662073e2e01e98f4846fb0a0ed643 --- .../source/container/containermultiplexer.cxx | 23 ++++--------------- include/comphelper/containermultiplexer.hxx | 5 ++-- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/comphelper/source/container/containermultiplexer.cxx b/comphelper/source/container/containermultiplexer.cxx index b7e3c93becbe..e80f550bb02e 100644 --- a/comphelper/source/container/containermultiplexer.cxx +++ b/comphelper/source/container/containermultiplexer.cxx @@ -29,18 +29,16 @@ namespace comphelper using namespace ::com::sun::star::container; OContainerListener::OContainerListener(::osl::Mutex& _rMutex) - :m_pAdapter(nullptr) - ,m_rMutex(_rMutex) + :m_rMutex(_rMutex) { } OContainerListener::~OContainerListener() { - if (m_pAdapter) + if (m_xAdapter.is()) { - m_pAdapter->dispose(); - m_pAdapter = nullptr; + m_xAdapter->dispose(); } } @@ -71,19 +69,8 @@ namespace comphelper void OContainerListener::setAdapter(OContainerListenerAdapter* pAdapter) { - if (m_pAdapter) - { - ::osl::MutexGuard aGuard(m_rMutex); - m_pAdapter->release(); - m_pAdapter = nullptr; - } - - if (pAdapter) - { - ::osl::MutexGuard aGuard(m_rMutex); - m_pAdapter = pAdapter; - m_pAdapter->acquire(); - } + ::osl::MutexGuard aGuard(m_rMutex); + m_xAdapter = pAdapter; } OContainerListenerAdapter::OContainerListenerAdapter(OContainerListener* _pListener, diff --git a/include/comphelper/containermultiplexer.hxx b/include/comphelper/containermultiplexer.hxx index 946ff698373d..07b044303dbf 100644 --- a/include/comphelper/containermultiplexer.hxx +++ b/include/comphelper/containermultiplexer.hxx @@ -24,6 +24,7 @@ #include #include #include +#include namespace comphelper @@ -43,8 +44,8 @@ namespace comphelper { friend class OContainerListenerAdapter; protected: - OContainerListenerAdapter* m_pAdapter; - ::osl::Mutex& m_rMutex; + rtl::Reference m_xAdapter; + ::osl::Mutex& m_rMutex; public: OContainerListener(::osl::Mutex& _rMutex);