diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-02-22 10:19:02 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-02-22 12:43:55 +0000 |
commit | 7cfe7f23efb97f6b42dcb1589b3d66d4b881092d (patch) | |
tree | 290e0da9d56aef151ee28722b713de55d8629c71 /svx | |
parent | 1f49d8ad7a520975f611023f77f3fc9c0e32ed77 (diff) |
create new OPropertyChangeListener2 and use it in FmFieldWin
create OPropertyChangeListener2 as a modified copy of
OPropertyChangeListener which uses std::mutex instead of osl::Mutex
Change-Id: Ic6be1c62992749e4f0dd23a8c95de63dc45eba3d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147430
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/form/tabwin.cxx | 16 | ||||
-rw-r--r-- | svx/source/inc/tabwin.hxx | 8 |
2 files changed, 14 insertions, 10 deletions
diff --git a/svx/source/form/tabwin.cxx b/svx/source/form/tabwin.cxx index 91322b45fc3c..4c534ef7c35b 100644 --- a/svx/source/form/tabwin.cxx +++ b/svx/source/form/tabwin.cxx @@ -112,7 +112,7 @@ IMPL_LINK(FmFieldWin, DragBeginHdl, bool&, rUnsetDragIcon, bool) FmFieldWin::FmFieldWin(SfxBindings* _pBindings, SfxChildWindow* _pMgr, weld::Window* _pParent) : SfxModelessDialogController(_pBindings, _pMgr, _pParent, "svx/ui/formfielddialog.ui", "FormFieldDialog") , SfxControllerItem(SID_FM_FIELDS_CONTROL, *_pBindings) - , comphelper::OPropertyChangeListener(m_aMutex) + , comphelper::OPropertyChangeListener2() , m_xListBox(m_xBuilder->weld_tree_view("treeview")) , m_nObjectType(0) { @@ -133,10 +133,13 @@ FmFieldWin::FmFieldWin(SfxBindings* _pBindings, SfxChildWindow* _pMgr, weld::Win FmFieldWin::~FmFieldWin() { - if (m_xChangeListener.is()) { - m_xChangeListener->dispose(); - m_xChangeListener.clear(); + std::unique_lock g(m_aMutex); + if (m_xChangeListener.is()) + { + m_xChangeListener->dispose(g); + m_xChangeListener.clear(); + } } ::SfxControllerItem::dispose(); } @@ -265,12 +268,13 @@ void FmFieldWin::UpdateContent(const css::uno::Reference< css::form::XForm > & x } // listen for changes at ControlSource in PropertySet + std::unique_lock g(m_aMutex); if (m_xChangeListener.is()) { - m_xChangeListener->dispose(); + m_xChangeListener->dispose(g); m_xChangeListener.clear(); } - m_xChangeListener = new ::comphelper::OPropertyChangeMultiplexer(this, xSet); + m_xChangeListener = new ::comphelper::OPropertyChangeMultiplexer2(m_aMutex, g, this, xSet); m_xChangeListener->addProperty(FM_PROP_DATASOURCE); m_xChangeListener->addProperty(FM_PROP_COMMAND); m_xChangeListener->addProperty(FM_PROP_COMMANDTYPE); diff --git a/svx/source/inc/tabwin.hxx b/svx/source/inc/tabwin.hxx index c1cf70664bcc..0209f3d31654 100644 --- a/svx/source/inc/tabwin.hxx +++ b/svx/source/inc/tabwin.hxx @@ -25,7 +25,7 @@ #include <svx/dbaexchange.hxx> #include <com/sun/star/form/XForm.hpp> -#include <comphelper/propmultiplex.hxx> +#include <comphelper/propmultiplex2.hxx> #include <connectivity/dbtools.hxx> class FmFormShell; @@ -33,9 +33,9 @@ struct ColumnInfo; class FmFieldWin final : public SfxModelessDialogController , public SfxControllerItem - , public ::comphelper::OPropertyChangeListener + , public ::comphelper::OPropertyChangeListener2 { - ::osl::Mutex m_aMutex; + std::mutex m_aMutex; std::unique_ptr<weld::TreeView> m_xListBox; std::vector<std::unique_ptr<ColumnInfo>> m_aListBoxData; ::dbtools::SharedConnection @@ -44,7 +44,7 @@ class FmFieldWin final : public SfxModelessDialogController m_aObjectName; sal_Int32 m_nObjectType; - rtl::Reference<comphelper::OPropertyChangeMultiplexer> m_xChangeListener; + rtl::Reference<comphelper::OPropertyChangeMultiplexer2> m_xChangeListener; rtl::Reference<svx::OColumnTransferable> m_xHelper; void addToList(const css::uno::Reference<css::container::XNameAccess>& i_xColumns); |