summaryrefslogtreecommitdiff
path: root/include/vcl
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-01-14 10:56:50 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-01-14 21:04:10 +0100
commita2eaf99e46f370ffb3b73828c2bdc53dc193b9a4 (patch)
tree6d08d7b5077478a92acde6dd6e7278e98a409ce1 /include/vcl
parent49a5e69f567302633299bf6626a9d9b9544ee94b (diff)
make comphelper::OInterfaceContainerHelper4 more threadsafe
(*) make all the methods that require an external mutex take a std::unique_lock as a parameter, so that call sites cannot forget (*) make the forEach method drop the lock when firing listener methods, to reduce the odds of deadlock Change-Id: I0a80e3b3d1c1c03b7de4a658d31fcc2847690903 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128415 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include/vcl')
-rw-r--r--include/vcl/weldutils.hxx24
1 files changed, 12 insertions, 12 deletions
diff --git a/include/vcl/weldutils.hxx b/include/vcl/weldutils.hxx
index a8c2e1eac11d..07fc5eb2d684 100644
--- a/include/vcl/weldutils.hxx
+++ b/include/vcl/weldutils.hxx
@@ -89,84 +89,84 @@ public:
addWindowListener(const css::uno::Reference<css::awt::XWindowListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aWindowListeners.addInterface(rListener);
+ m_aWindowListeners.addInterface(g, rListener);
}
void SAL_CALL
removeWindowListener(const css::uno::Reference<css::awt::XWindowListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aWindowListeners.removeInterface(rListener);
+ m_aWindowListeners.removeInterface(g, rListener);
}
void SAL_CALL
addFocusListener(const css::uno::Reference<css::awt::XFocusListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aFocusListeners.addInterface(rListener);
+ m_aFocusListeners.addInterface(g, rListener);
}
void SAL_CALL
removeFocusListener(const css::uno::Reference<css::awt::XFocusListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aFocusListeners.removeInterface(rListener);
+ m_aFocusListeners.removeInterface(g, rListener);
}
void SAL_CALL
addKeyListener(const css::uno::Reference<css::awt::XKeyListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aKeyListeners.addInterface(rListener);
+ m_aKeyListeners.addInterface(g, rListener);
}
void SAL_CALL
removeKeyListener(const css::uno::Reference<css::awt::XKeyListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aKeyListeners.removeInterface(rListener);
+ m_aKeyListeners.removeInterface(g, rListener);
}
void SAL_CALL
addMouseListener(const css::uno::Reference<css::awt::XMouseListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aMouseListeners.addInterface(rListener);
+ m_aMouseListeners.addInterface(g, rListener);
}
void SAL_CALL
removeMouseListener(const css::uno::Reference<css::awt::XMouseListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aMouseListeners.removeInterface(rListener);
+ m_aMouseListeners.removeInterface(g, rListener);
}
void SAL_CALL addMouseMotionListener(
const css::uno::Reference<css::awt::XMouseMotionListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aMotionListeners.addInterface(rListener);
+ m_aMotionListeners.addInterface(g, rListener);
}
void SAL_CALL removeMouseMotionListener(
const css::uno::Reference<css::awt::XMouseMotionListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aMotionListeners.removeInterface(rListener);
+ m_aMotionListeners.removeInterface(g, rListener);
}
void SAL_CALL
addPaintListener(const css::uno::Reference<css::awt::XPaintListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aPaintListeners.addInterface(rListener);
+ m_aPaintListeners.addInterface(g, rListener);
}
void SAL_CALL
removePaintListener(const css::uno::Reference<css::awt::XPaintListener>& rListener) override
{
std::unique_lock g(m_aMutex);
- m_aPaintListeners.removeInterface(rListener);
+ m_aPaintListeners.removeInterface(g, rListener);
}
};