diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2015-06-17 15:18:10 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2015-06-17 15:24:19 +0200 |
commit | 8e1ad966262932516b3368d9b5c44becb29524d4 (patch) | |
tree | 4dbee378e3376712011631734195886fb41404e2 /toolkit/source/controls | |
parent | 0f5b7dfea974c21b48843c3cbf7fdf344ad54a3a (diff) |
Some missing SolarMutexGuard around VclPtr acquire/release
At least OutputDevice::acquire/release use a plain unguarded int and ++, --, so
apparently rely on the SolarMutex being locked whenever they are called. Fixed
those places that caused "make check" to fail for me when temporarily adding
DBG_TESTSOLARMUTEX() to OutputDevice::acquire/release. (A recurring pattern is
that a class fails to ensure the SolarMutex is locked around the destruction of
non-null VclPtr members.)
Change-Id: I77cba6f3908f2de1b516ce28f1c3c43b3f57a9c5
Diffstat (limited to 'toolkit/source/controls')
-rw-r--r-- | toolkit/source/controls/unocontrol.cxx | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/toolkit/source/controls/unocontrol.cxx b/toolkit/source/controls/unocontrol.cxx index 9c85e6270596c..0952e97960860 100644 --- a/toolkit/source/controls/unocontrol.cxx +++ b/toolkit/source/controls/unocontrol.cxx @@ -640,8 +640,12 @@ void UnoControl::ImplModelPropertiesChanged( const Sequence< PropertyChangeEvent // Since the implementations for the listeners changed a lot towards 1.1, this // would not be the case anymore, if we would not do this listener-lock below // #i14703# - vcl::Window* pVclPeer = VCLUnoHelper::GetWindow( getPeer() ); - VCLXWindow* pPeer = pVclPeer ? pVclPeer->GetWindowPeer() : NULL; + VCLXWindow* pPeer; + { + SolarMutexGuard g; + vcl::Window* pVclPeer = VCLUnoHelper::GetWindow( getPeer() ); + pPeer = pVclPeer ? pVclPeer->GetWindowPeer() : NULL; + } VclListenerLock aNoVclEventMultiplexing( pPeer ); // setting peer properties may result in an attempt to acquire the solar mutex, 'cause the peers |