From 5b2cb23c429e1be1099008473770c634ce96c969 Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Mon, 5 Mar 2012 21:18:00 +0000 Subject: attempt fix of hang on base close, due to solarmutex deadlock on join --- framework/inc/dispatch/closedispatcher.hxx | 1 + framework/source/dispatch/closedispatcher.cxx | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'framework') 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 @@ -267,6 +267,13 @@ void SAL_CALL CloseDispatcher::dispatchWithNotification(const css::util::URL& or shutdown the whole application. */ 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; } //----------------------------------------------- -- cgit