diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-10-02 23:25:44 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-10-02 23:52:44 +0200 |
commit | 78f05c0a6514ca084051f16498513033dacb14aa (patch) | |
tree | a6d26de1ea3fb137cd2e1d87b8b085a4a33c4874 /svx/source/fmcomp/fmgridif.cxx | |
parent | cf88ebc1f7d358a1dcd9e5b49026194e05916896 (diff) |
toolkit: avoid deadlock in UnoControl::setDesignMode()
Avoid deadlock by disposing the accesibility context without the Mutex
locked, since it will eventually try to acquire the SolarMutex...
Thread 1 in UnoControl::getPosSize()
calling from sdr::contact::ControlHolder::getPosSize()
Thread 2 calling from UnoControl::setDesignMode()
trying to get SolarMutex in VCLXWindow::disposing()
Change-Id: I7d0ffe4fa0f8cd0c48e9b9b5e923ce229f97ca57
Diffstat (limited to 'svx/source/fmcomp/fmgridif.cxx')
-rw-r--r-- | svx/source/fmcomp/fmgridif.cxx | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/svx/source/fmcomp/fmgridif.cxx b/svx/source/fmcomp/fmgridif.cxx index 8d6e0752645d..358328bfc844 100644 --- a/svx/source/fmcomp/fmgridif.cxx +++ b/svx/source/fmcomp/fmgridif.cxx @@ -787,7 +787,9 @@ void SAL_CALL FmXGridControl::setDesignMode(sal_Bool bOn) throw( RuntimeExceptio // dispose our current AccessibleContext, if we have one // (changing the design mode implies having a new implementation for this context, // so the old one must be declared DEFUNC) - disposeAccessibleContext(); + DisposeAccessibleContext( + Reference<XComponent>(maAccessibleContext, UNO_QUERY)); + maAccessibleContext.clear(); // prepare firing an event aModeChangeEvent.Source = *this; |