diff options
author | Michael Meeks <michael.meeks@suse.com> | 2012-03-05 21:18:00 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-03-05 22:32:21 +0000 |
commit | 5b2cb23c429e1be1099008473770c634ce96c969 (patch) | |
tree | 74a88064abb6402ef44abac85922a688ceaa5ca0 /framework | |
parent | Translate German comments (diff) | |
download | core-5b2cb23c429e1be1099008473770c634ce96c969.tar.gz core-5b2cb23c429e1be1099008473770c634ce96c969.zip |
attempt fix of hang on base close, due to solarmutex deadlock on join
Diffstat (limited to 'framework')
-rw-r--r-- | framework/inc/dispatch/closedispatcher.hxx | 1 | ||||
-rw-r--r-- | framework/source/dispatch/closedispatcher.cxx | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/framework/inc/dispatch/closedispatcher.hxx b/framework/inc/dispatch/closedispatcher.hxx index 81d884298ad9..eabad8c7c56e 100644 --- a/framework/inc/dispatch/closedispatcher.hxx +++ b/framework/inc/dispatch/closedispatcher.hxx @@ -206,6 +206,7 @@ class CloseDispatcher : public css::lang::XTypeProvider during they call us ... */ DECL_LINK( impl_asyncCallback, void* ); + void doClose(); //--------------------------------------- /** @short prepare m_xCloseFrame so it should be closeable without problems. diff --git a/framework/source/dispatch/closedispatcher.cxx b/framework/source/dispatch/closedispatcher.cxx index 01523d2e4f06..0b670eb7b501 100644 --- a/framework/source/dispatch/closedispatcher.cxx +++ b/framework/source/dispatch/closedispatcher.cxx @@ -268,6 +268,13 @@ void SAL_CALL CloseDispatcher::dispatchWithNotification(const css::util::URL& */ IMPL_LINK_NOARG(CloseDispatcher, impl_asyncCallback) { + SolarMutexReleaser aReleaser; + doClose(); + return 0; +} + +void CloseDispatcher::doClose() +{ try { @@ -296,7 +303,7 @@ IMPL_LINK_NOARG(CloseDispatcher, impl_asyncCallback) // frame already dead ?! // Nothing to do ! if (! xCloseFrame.is()) - return 0; + return; sal_Bool bCloseFrame = sal_False; sal_Bool bEstablishBackingMode = sal_False; @@ -452,7 +459,7 @@ IMPL_LINK_NOARG(CloseDispatcher, impl_asyncCallback) { } - return 0; + return; } //----------------------------------------------- |