[Libreoffice-commits] core.git: 2 commits - desktop/source reportdesign/source

Michael Stahl mstahl at redhat.com
Fri Dec 5 14:12:17 PST 2014


 desktop/source/app/app.cxx               |    6 ++++--
 reportdesign/source/core/api/Section.cxx |    2 ++
 2 files changed, 6 insertions(+), 2 deletions(-)

New commits:
commit a2a9c84deff54321da0042212bae86ede25dd7e2
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Dec 5 22:24:14 2014 +0100

    fdo#85112: reportdesign: fix SolarMutex assertion
    
    A bit tricky, but all of the UNO wrappers for SdrObjects etc. in svx use
    the SolarMutex for locking, so it's reasonable to expect that
    reportdesign code also has to lock SolarMutex when it manipulates these.
    
    Change-Id: I3cade8f53d7655e249b82673c87238d5a17256cb

diff --git a/reportdesign/source/core/api/Section.cxx b/reportdesign/source/core/api/Section.cxx
index e70bb3b..71993ad 100644
--- a/reportdesign/source/core/api/Section.cxx
+++ b/reportdesign/source/core/api/Section.cxx
@@ -34,6 +34,7 @@
 #include "ReportDefinition.hxx"
 #include "Shape.hxx"
 #include <svx/unoshape.hxx>
+#include <vcl/svapp.hxx>
 #include "RptObject.hxx"
 #include "ReportDrawPage.hxx"
 #include <comphelper/property.hxx>
@@ -197,6 +198,7 @@ sal_Bool SAL_CALL OSection::supportsService( const OUString& _rServiceName ) thr
 
 void OSection::init()
 {
+    SolarMutexGuard g; // lock while manipulating SdrModel
     uno::Reference< report::XReportDefinition> xReport = getReportDefinition();
     ::boost::shared_ptr<rptui::OReportModel> pModel = OReportDefinition::getSdrModel(xReport);
     assert(pModel && "No model set at the report definition!");
commit dce74be2bab7a6924578e8f6f6ce37aa593cc481
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Dec 5 20:57:20 2014 +0100

    desktop: avoid starting with new writer doc if OOO_DISABLE_RECOVERY set
    
    Better to show the start center, same as when --norestore is given.
    
    Change-Id: I726a8b7d227b646180fe16ee9c302a329a7fa36c

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index f5722e4..f71aa9b 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -2290,10 +2290,11 @@ void Desktop::OpenClients()
         bool bCrashed            = false;
         bool bExistsRecoveryData = false;
         bool bExistsSessionData  = false;
+        bool const bDisableRecovery = getenv("OOO_DISABLE_RECOVERY") != nullptr;
 
         impl_checkRecoveryState(bCrashed, bExistsRecoveryData, bExistsSessionData);
 
-        if ( !getenv ("OOO_DISABLE_RECOVERY") &&
+        if ( !bDisableRecovery &&
             (
                 ( bExistsRecoveryData ) || // => crash with files    => recovery
                 ( bCrashed            )    // => crash without files => error report
@@ -2324,7 +2325,8 @@ void Desktop::OpenClients()
             SAL_WARN( "desktop.app", "Registration of session listener failed" << e.Message);
         }
 
-        if ( !bExistsRecoveryData && xSessionListener.is() )
+        // in bDisableRecovery case call doRestore() to prevent new Writer doc
+        if ((!bExistsRecoveryData || bDisableRecovery) && xSessionListener.is())
         {
             // session management
             try


More information about the Libreoffice-commits mailing list