On Mon, 2012-03-05 at 12:56 -0800, julien2412 wrote:
> I'm just a C++ beginner (and think i'll still be for years), it's far beyond
> my few skills sorry
Hah ! you're doing really well for a beginner :-)
> Now if someone propose a patch I can try to test again the closing of base.
The attached might work, input / testing appreciated :-) particularly
of the other component's exit, and the results of 'make check' before
and after.
Thanks,
Michael.
--
[email protected] <><, Pseudo Engineer, itinerant idiot
>From 83b9e1114e829410e4063da27f9c2af220978354 Mon Sep 17 00:00:00 2001
From: Michael Meeks <[email protected]>
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
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice