Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index



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.