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.
--
michael.meeks@suse.com <><, Pseudo Engineer, itinerant idiot
From 83b9e1114e829410e4063da27f9c2af220978354 Mon Sep 17 00:00:00 2001
From: Michael Meeks <michael.meeks@suse.com>
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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.