From 83b9e1114e829410e4063da27f9c2af220978354 Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Mon, 5 Mar 2012 21:18:00 +0000 Subject: [PATCH] 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(-) diff --git a/framework/inc/dispatch/closedispatcher.hxx b/framework/inc/dispatch/closedispatcher.hxx index 81d8842..eabad8c 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 01523d2..0b670eb 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; } //----------------------------------------------- -- 1.7.9