Kaydet (Commit) 46a0ce80 authored tarafından Noel Grandin's avatar Noel Grandin

use rtl::Reference in TheModelRef

instead of manual acquire/release

Change-Id: I7a5ae0337fc8fa1465ac716050e7187aa1accb87
üst cef8ebe9
......@@ -414,10 +414,10 @@ private:
TheModelRef& operator=(const TheModelRef& rTheModel);
~TheModelRef();
bool is() const;
TheModel* operator->() const { return m_pTheModel; }
TheModel* operator->() const { return m_xTheModel.get(); }
private:
TheModel* m_pTheModel;
::osl::Mutex& m_rModelMutex;
rtl::Reference<TheModel> m_xTheModel;
::osl::Mutex& m_rModelMutex;
};
private:
......
......@@ -221,55 +221,37 @@ void ChartController::TheModel::tryTermination()
}
ChartController::TheModelRef::TheModelRef( TheModel* pTheModel, osl::Mutex& rMutex ) :
m_pTheModel(pTheModel),
m_rModelMutex(rMutex)
{
osl::Guard< osl::Mutex > aGuard( m_rModelMutex );
if(m_pTheModel)
m_pTheModel->acquire();
m_xTheModel = pTheModel;
}
ChartController::TheModelRef::TheModelRef( const TheModelRef& rTheModel, ::osl::Mutex& rMutex ) :
m_rModelMutex(rMutex)
{
osl::Guard< osl::Mutex > aGuard( m_rModelMutex );
m_pTheModel=rTheModel.operator->();
if(m_pTheModel)
m_pTheModel->acquire();
m_xTheModel = rTheModel.m_xTheModel;
}
ChartController::TheModelRef& ChartController::TheModelRef::operator=(TheModel* pTheModel)
{
osl::Guard< osl::Mutex > aGuard( m_rModelMutex );
if(m_pTheModel==pTheModel)
return *this;
if(m_pTheModel)
m_pTheModel->release();
m_pTheModel=pTheModel;
if(m_pTheModel)
m_pTheModel->acquire();
m_xTheModel = pTheModel;
return *this;
}
ChartController::TheModelRef& ChartController::TheModelRef::operator=(const TheModelRef& rTheModel)
{
osl::Guard< osl::Mutex > aGuard( m_rModelMutex );
TheModel* pNew=rTheModel.operator->();
if(m_pTheModel==pNew)
return *this;
if(m_pTheModel)
m_pTheModel->release();
m_pTheModel=pNew;
if(m_pTheModel)
m_pTheModel->acquire();
m_xTheModel = rTheModel.operator->();
return *this;
}
ChartController::TheModelRef::~TheModelRef()
{
osl::Guard< osl::Mutex > aGuard( m_rModelMutex );
if(m_pTheModel)
m_pTheModel->release();
m_xTheModel.clear();
}
bool ChartController::TheModelRef::is() const
{
return (m_pTheModel != nullptr);
return m_xTheModel.is();
}
namespace {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment