[Libreoffice-commits] core.git: Branch 'feature/formula-core-rework' - 78 commits - basctl/source basic/source chart2/source comphelper/source compilerplugins/clang connectivity/Library_mozabdrv.mk connectivity/source cui/source dbaccess/source desktop/source dictionaries download.lst extensions/source filter/source forms/source framework/inc framework/Library_fwk.mk framework/source framework/util harfbuzz/harfbuzz.configure.patch.1 helpcontent2 include/sfx2 include/svtools include/toolkit include/vcl languagetool/ExternalProject_languagetool.mk libodfgen/ExternalPackage_libodfgen.mk liborcus/UnpackedTarball_liborcus.mk liborcus/visibility.patch mdds/0001-Avoid-crash-when-_GLIBCXX_DEBUG-is-defined.patch mdds/UnpackedTarball_mdds.mk nss/ExternalProject_nss.mk nss/nss_macosx.patch offapi/com offapi/UnoApi_offapi.mk officecfg/registry oox/source package/source qadevOOo/runner qadevOOo/tests reportdesign/source sc/qa scripting/source sc/source sd/AllLangResTarget_sd.mk sdext/source sd/source sd/uiconfig sd/UIConfig_simpress.mk sfx2/source solenv/bin solenv/gbuild solenv/gdb starmath/inc starmath/source starmath/uiconfig starmath/UIConfig_smath.mk svtools/source svx/source sw/source toolkit/source ucb/source unotools/source unoxml/source vcl/inc vcl/source xmloff/source

Kohei Yoshida kohei.yoshida at gmail.com
Wed May 22 10:20:04 PDT 2013


Rebased ref, commits from common ancestor:
commit 5b7c4ecee2236665a4a623dd5d1a0aad29c4271f
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Wed May 22 13:19:22 2013 -0400

    Turn on the perf test again. Will turn it off before merging.
    
    Change-Id: If93a2b7830a15a85b7c89daee462378cc244c690

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 3f306d0..12fb593 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -77,7 +77,7 @@
 #include <vector>
 
 #define CALC_DEBUG_OUTPUT 0
-#define CALC_TEST_PERF 0
+#define CALC_TEST_PERF 1
 
 #include "helper/debughelper.hxx"
 #include "helper/qahelper.hxx"
commit 4fa7a0ce8131106a038ba441bcc230d0377690ac
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Wed May 22 12:14:24 2013 -0400

    Disable Calc perf test by default & output both pseudo-cycles and real time.
    
    Change-Id: I35120e576208640976cdda0a5628e355bbe2dc7c

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 90da5f0..3f306d0 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -77,6 +77,7 @@
 #include <vector>
 
 #define CALC_DEBUG_OUTPUT 0
+#define CALC_TEST_PERF 0
 
 #include "helper/debughelper.hxx"
 #include "helper/qahelper.hxx"
@@ -92,16 +93,6 @@ using ::std::vector;
 
 namespace {
 
-double getTimeDiff(const TimeValue& t1, const TimeValue& t2)
-{
-    double tv1 = t1.Seconds;
-    double tv2 = t2.Seconds;
-    tv1 += t1.Nanosec / 1000000000.0;
-    tv2 += t2.Nanosec / 1000000000.0;
-
-    return tv1 - tv2;
-}
-
 class Test : public test::BootstrapFixture {
 public:
     Test();
@@ -283,7 +274,7 @@ public:
     void testCondFormatINSDEL();
 
     CPPUNIT_TEST_SUITE(Test);
-#if !defined(DBG_UTIL) && !defined(_WIN32_WINNT)
+#if CALC_TEST_PERF
     CPPUNIT_TEST(testPerf);
 #endif
     CPPUNIT_TEST(testCollator);
@@ -447,20 +438,11 @@ public:
 class MeasureTimeSwitch
 {
     double& mrDiff;
-    double mnScale;
     TimeValue maTimeBefore;
 public:
     MeasureTimeSwitch(double& rDiff) : mrDiff(rDiff)
     {
         mrDiff = 9999.0;
-        mnScale = 1.0;
-        osl_getSystemTime(&maTimeBefore);
-    }
-    // Scaled pseudo-time
-    MeasureTimeSwitch(double& rDiff, const double nScale ) : mrDiff(rDiff)
-    {
-        mrDiff = 9999.0;
-        mnScale = nScale;
         osl_getSystemTime(&maTimeBefore);
     }
 
@@ -468,7 +450,17 @@ public:
     {
         TimeValue aTimeAfter;
         osl_getSystemTime(&aTimeAfter);
-        mrDiff = getTimeDiff(aTimeAfter, maTimeBefore) / mnScale;
+        mrDiff = getTimeDiff(aTimeAfter, maTimeBefore);
+    }
+
+    double getTimeDiff(const TimeValue& t1, const TimeValue& t2) const
+    {
+        double tv1 = t1.Seconds;
+        double tv2 = t2.Seconds;
+        tv1 += t1.Nanosec / 1000000000.0;
+        tv2 += t2.Nanosec / 1000000000.0;
+
+        return tv1 - tv2;
     }
 };
 
@@ -497,13 +489,13 @@ void Test::tearDown()
     BootstrapFixture::tearDown();
 }
 
-#define PERF_ASSERT(df,time,message) \
+#define PERF_ASSERT(df,scale,time,message) \
     do { \
-        if ((df) >= (time)) \
+        double dfscaled = df / scale; \
+        if ((dfscaled) >= (time)) \
         { \
             std::ostringstream os; \
-            os << message << " took " << diff << " psuedo-cycles, expected: " << time; \
-            /* debugging - fprintf (stderr, "'%s'\n", os.str().c_str()); */ \
+            os << message << " took " << dfscaled << " pseudo-cycles (" << df << " real-time seconds), expected: " << time << " pseudo-cycles."; \
             CPPUNIT_FAIL(os.str().c_str()); \
         } \
     } while (0)
@@ -545,10 +537,10 @@ void Test::testPerf()
     // second.  Flag failure if it takes more than one second.  Clearing 100
     // columns should be large enough to flag if something goes wrong.
     {
-        MeasureTimeSwitch aTime(diff, scale);
+        MeasureTimeSwitch aTime(diff);
         clearRange(m_pDoc, ScRange(0,0,0,99,MAXROW,0));
     }
-    PERF_ASSERT(diff, 1.0, "Clearing an empty sheet");
+    PERF_ASSERT(diff, scale, 1.0, "Clearing an empty sheet");
 
     {
         // Switch to R1C1 to make it easier to input relative references in multiple cells.
@@ -563,10 +555,10 @@ void Test::testPerf()
         // Now, Delete B2:B100000. This should complete in a fraction of a second
         // (0.06 sec on my machine).
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             clearRange(m_pDoc, ScRange(1,1,0,1,99999,0));
         }
-        PERF_ASSERT(diff, 3000, "Removal of a large array of formula cells");
+        PERF_ASSERT(diff, scale, 2000, "Removal of a large array of formula cells");
     }
 
     clearRange(m_pDoc, ScRange(0,0,0,1,MAXROW,0)); // Clear columns A:B.
@@ -597,10 +589,10 @@ void Test::testPerf()
         aMark.SetMarkArea(aPasteRange);
 
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             m_pDoc->CopyFromClip(aPasteRange, aMark, IDF_CONTENTS, pUndoDoc, &aClipDoc);
         }
-        PERF_ASSERT(diff, 1500.0, "Pasting a single cell to A2:A100000");
+        PERF_ASSERT(diff, scale, 1500.0, "Pasting a single cell to A2:A100000");
 
         ScDocument* pRedoDoc = new ScDocument(SCDOCMODE_UNDO);
         pRedoDoc->InitUndo(m_pDoc, 0, 0);
@@ -615,10 +607,10 @@ void Test::testPerf()
         CPPUNIT_ASSERT_EQUAL(m_pDoc->GetString(aPos), m_pDoc->GetString(aPasteRange.aEnd));
 
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             aUndo.Undo();
         }
-        PERF_ASSERT(diff, 500.0, "Undoing a pasting of a cell to A2:A100000");
+        PERF_ASSERT(diff, scale, 500.0, "Undoing a pasting of a cell to A2:A100000");
 
         // Make sure it's really undone.
         CPPUNIT_ASSERT_EQUAL(CELLTYPE_STRING, m_pDoc->GetCellType(aPos));
@@ -627,10 +619,10 @@ void Test::testPerf()
 
         // Now redo.
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             aUndo.Redo();
         }
-        PERF_ASSERT(diff, 1000.0, "Redoing a pasting of a cell to A2:A100000");
+        PERF_ASSERT(diff, scale, 1000.0, "Redoing a pasting of a cell to A2:A100000");
 
         // Make sure it's really redone.
         CPPUNIT_ASSERT_EQUAL(m_pDoc->GetString(aPos), m_pDoc->GetString(aPasteRange.aStart));
@@ -668,10 +660,10 @@ void Test::testPerf()
         aMark.SetMarkArea(aPasteRange);
 
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             m_pDoc->CopyFromClip(aPasteRange, aMark, IDF_CONTENTS, pUndoDoc, &aClipDoc);
         }
-        PERF_ASSERT(diff, 1000.0, "Pasting A1:A2 to A3:A100001");
+        PERF_ASSERT(diff, scale, 1000.0, "Pasting A1:A2 to A3:A100001");
 
         ScDocument* pRedoDoc = new ScDocument(SCDOCMODE_UNDO);
         pRedoDoc->InitUndo(m_pDoc, 0, 0);
@@ -689,10 +681,10 @@ void Test::testPerf()
         CPPUNIT_ASSERT_EQUAL(CELLTYPE_NONE, m_pDoc->GetCellType(aTmp));
 
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             aUndo.Undo();
         }
-        PERF_ASSERT(diff, 500.0, "Undoing");
+        PERF_ASSERT(diff, scale, 500.0, "Undoing");
 
         // Make sure it's really undone.
         CPPUNIT_ASSERT_EQUAL(CELLTYPE_VALUE, m_pDoc->GetCellType(aPos));
@@ -701,10 +693,10 @@ void Test::testPerf()
 
         // Now redo.
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             aUndo.Redo();
         }
-        PERF_ASSERT(diff, 800.0, "Redoing");
+        PERF_ASSERT(diff, scale, 800.0, "Redoing");
 
         // Make sure it's really redone.
         CPPUNIT_ASSERT_EQUAL(m_pDoc->GetString(aPos), m_pDoc->GetString(aPasteRange.aStart));
@@ -745,10 +737,10 @@ void Test::testPerf()
         aMark.SetMarkArea(aPasteRange);
 
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             m_pDoc->CopyFromClip(aPasteRange, aMark, IDF_CONTENTS, pUndoDoc, &aClipDoc);
         }
-        PERF_ASSERT(diff, 2000.0, "Pasting");
+        PERF_ASSERT(diff, scale, 2000.0, "Pasting");
 
         ScDocument* pRedoDoc = new ScDocument(SCDOCMODE_UNDO);
         pRedoDoc->InitUndo(m_pDoc, 0, 0);
@@ -767,10 +759,10 @@ void Test::testPerf()
 
 #if 0 // TODO: Undo and redo of this scenario is currently not fast enough to be tested reliably.
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             aUndo.Undo();
         }
-        PERF_ASSERT(diff, 1.0, "Undoing");
+        PERF_ASSERT(diff, scale, 1.0, "Undoing");
 
         // Make sure it's really undone.
         CPPUNIT_ASSERT_EQUAL(CELLTYPE_FORMULA, m_pDoc->GetCellType(aPos));
@@ -779,10 +771,10 @@ void Test::testPerf()
 
         // Now redo.
         {
-            MeasureTimeSwitch aTime(diff, scale);
+            MeasureTimeSwitch aTime(diff);
             aUndo.Redo();
         }
-        PERF_ASSERT(diff, 1.0, "Redoing");
+        PERF_ASSERT(diff, scale, 1.0, "Redoing");
 
         // Make sure it's really redone.
         CPPUNIT_ASSERT_EQUAL(CELLTYPE_FORMULA, m_pDoc->GetCellType(aPasteRange.aStart));
commit 6958b6a3ce9f28bed2a529939e7740452929a5b3
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Wed May 22 11:17:52 2013 -0400

    Use the block position of the destination, not of the source.
    
    And a test to catch this.
    
    Change-Id: Ia73be239b4be96cbe029390efbbec5f49e429652

diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 36a59fa..90da5f0 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -4494,6 +4494,7 @@ void Test::testPivotTableDocFunc()
 void Test::testSheetCopy()
 {
     m_pDoc->InsertTab(0, "TestTab");
+    m_pDoc->SetString(ScAddress(0,0,0), "copy me");
     CPPUNIT_ASSERT_MESSAGE("document should have one sheet to begin with.", m_pDoc->GetTableCount() == 1);
     SCROW nRow1, nRow2;
     bool bHidden = m_pDoc->RowHidden(0, 0, &nRow1, &nRow2);
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 10d36b6..dfbc21d 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1444,7 +1444,7 @@ void ScColumn::CopyToColumn(
                     // Special case to allow removing of cell instances.  A
                     // string cell with empty content is used to indicate an
                     // empty cell.
-                    sc::ColumnBlockPosition* p = rCxt.getBlockPosition(nTab, nCol);
+                    sc::ColumnBlockPosition* p = rCxt.getBlockPosition(rColumn.nTab, rColumn.nCol);
                     if (pNew->GetCellType() == CELLTYPE_STRING)
                     {
                         OUString aStr = static_cast<ScStringCell*>(pNew)->GetString();
commit ba9613715288f3907185133892d1dbbaa9e006a9
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed May 22 16:59:04 2013 +0200

    Minor simplification
    
    Change-Id: I8425971ed81b4f13be5e295a5a5b9ef443b9a4db

diff --git a/chart2/source/inc/macros.hxx b/chart2/source/inc/macros.hxx
index 89a0e56..874a4dd 100644
--- a/chart2/source/inc/macros.hxx
+++ b/chart2/source/inc/macros.hxx
@@ -19,22 +19,17 @@
 #ifndef CHART_MACROS_HXX
 #define CHART_MACROS_HXX
 
+#include "sal/config.h"
+
 #include <typeinfo>
 
-/** shows an error-box for an exception ex
-    else-branch necessary to avoid warning
-*/
-#if OSL_DEBUG_LEVEL > 0
+#include "sal/log.hxx"
+
 #define ASSERT_EXCEPTION(ex)                   \
   SAL_WARN("chart2", "Exception caught. Type: " <<\
     typeid( ex ).name() << ", Message: " << \
     ex.Message )
-#else
-//avoid compilation warnings
-#define ASSERT_EXCEPTION(ex) (void)(ex)
-#endif
 
-// CHART_MACROS_HXX
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit ea2f06d7884f2b765394bff8a1e935f67f6c961d
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed May 22 16:19:33 2013 +0200

    Ensure SolarMutex is locked at DBG_TESTSOLARMUTEX checkpoints
    
    f218110744cbb2ec79796d886042546e47334cca "Get rid of
    GlobalEditData::GetStdRefDevice()" causes DBG_TESTSOLARMUTEX failures like
    
    13 <signal handler called>
    14 0x000000396e035ba5 in raise () from /lib64/libc.so.6
    15 0x000000396e037358 in abort () from /lib64/libc.so.6
    16 0x000000396e02e972 in __assert_fail_base () from /lib64/libc.so.6
    17 0x000000396e02ea22 in __assert_fail () from /lib64/libc.so.6
    18 0x00002aaaaee6e42f in ImplDbgTestSolarMutex () at vcl/source/app/dbggui.cxx:1750
    19 0x00002aaaae21cf1b in DbgFunc (nAction=15, pParam=0x0) at tools/source/debug/debug.cxx:1118
    20 0x00002aaaaf12bbb5 in DbgTestSolarMutex () at include/tools/debug.hxx:295
    21 0x00002aaaaf151d4f in OutputDevice::ImplGetGraphics (this=0x2aab342127c0) at vcl/source/gdi/outdev.cxx:554
    22 0x00002aaaaf1562e9 in OutputDevice::DrawRect (this=0x2aab342127c0, rRect=Rectangle = {...}) at vcl/source/gdi/outdev.cxx:1665
    23 0x00002aaaaf14dc53 in OutputDevice::ImplDrawColorWallpaper (this=0x2aab342127c0, nX=0, nY=0, nWidth=1, nHeight=1, rWallpaper=...) at vcl/source/gdi/outdev6.cxx:775
    24 0x00002aaaaf14f68c in OutputDevice::ImplDrawWallpaper (this=0x2aab342127c0, nX=0, nY=0, nWidth=1, nHeight=1, rWallpaper=...) at vcl/source/gdi/outdev6.cxx:1080
    25 0x00002aaaaf14fa4c in OutputDevice::Erase (this=0x2aab342127c0) at vcl/source/gdi/outdev6.cxx:1141
    26 0x00002aaaaf2a8802 in VirtualDevice::ImplInitVirDev (this=0x2aab342127c0, pOutDev=0x2d93230, nDX=1, nDY=1, nBitCount=0, pData=0x0) at vcl/source/gdi/virdev.cxx:113
    27 0x00002aaaaf2a8a6e in VirtualDevice::VirtualDevice (this=0x2aab342127c0, nBitCount=0) at vcl/source/gdi/virdev.cxx:135
    28 0x00002aaacee3e6a1 in ImpEditEngine::SetRefDevice (this=0x2aab34212040, pRef=0x0) at editeng/source/editeng/impedit2.cxx:193
    29 0x00002aaacee3ddf7 in ImpEditEngine::ImpEditEngine (this=0x2aab34212040, pEE=0x2aab34211fe0, pItemPool=0x2aab34210780) at editeng/source/editeng/impedit2.cxx:154
    30 0x00002aaacedeec95 in EditEngine::EditEngine (this=0x2aab34211fe0, pItemPool=0x2aab34210780) at editeng/source/editeng/editeng.cxx:104
    31 0x00002aaaf63acf10 in frm::RichTextEngine::RichTextEngine (this=0x2aab34211fe0, _pPool=0x2aab34210780) at forms/source/richtext/richtextengine.cxx:102
    32 0x00002aaaf63ac8ea in frm::RichTextEngine::Create () at forms/source/richtext/richtextengine.cxx:52
    33 0x00002aaaf63bd661 in frm::ORichTextModel::ORichTextModel (this=0x2aab394e5728, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260) at forms/source/richtext/richtextmodel.cxx:68
    34 0x00002aaaf63c00e3 in frm::ORichTextModel::Create (_rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260) at forms/source/richtext/richtextmodel.cxx:242
    35 0x00002aaaab81054e in cppu::OSingleFactoryHelper::createInstanceEveryTime (this=0x2aaaf5d3d070, xContext=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/factory.cxx:171
    36 0x00002aaaab810765 in cppu::OSingleFactoryHelper::createInstanceWithContext (this=0x2aaaf5d3d070, xContext=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/factory.cxx:203
    37 0x00002aaaab8111bf in cppu::OFactoryComponentHelper::createInstanceWithContext (this=0x2aaaf5d3d008, xContext=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/factory.cxx:432
    38 0x00002aaaab865ee6 in cppuhelper::ServiceManager::createInstanceWithContext (this=0x2aaabc565208, aServiceSpecifier="com.sun.star.form.component.RichTextControl", Context=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/servicemanager.cxx:796
    39 0x00002aaaab865990 in cppuhelper::ServiceManager::createInstance (this=0x2aaabc565208, aServiceSpecifier="com.sun.star.form.component.RichTextControl") at cppuhelper/source/servicemanager.cxx:745
    40 0x00002aaaf62db43d in frm::OControlModel::OControlModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260, _rUnoControlModelTypeName="com.sun.star.form.component.RichTextControl", rDefault="com.sun.star.form.control.TextField", _bSetDelegator=0 '\000') at forms/source/component/FormComponent.cxx:598
    41 0x00002aaaf62def21 in frm::OBoundControlModel::OBoundControlModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260, _rUnoControlModelTypeName="com.sun.star.form.component.RichTextControl", _rDefault="com.sun.star.form.control.TextField", _bCommitable=1 '\001', _bSupportExternalBinding=1 '\001', _bSupportsValidation=1 '\001') at forms/source/component/FormComponent.cxx:1257
    42 0x00002aaaf62a212c in frm::OEditBaseModel::OEditBaseModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260, rUnoControlModelName="com.sun.star.form.component.RichTextControl", rDefault="com.sun.star.form.control.TextField", _bSupportExternalBinding=1 '\001', _bSupportsValidation=1 '\001') at forms/source/component/EditBase.cxx:56
    43 0x00002aaaf62a54e2 in frm::OEditModel::OEditModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260) at forms/source/component/Edit.cxx:294
    44 0x00002aaaf62d6a40 in frm::OFormattedFieldWrapper::read (this=0x2aaadbee2940, _rxInStream=uno::Reference to (io_stm::OObjectInputStream *) 0x2aab393d0070) at forms/source/component/FormattedFieldWrapper.cxx:303
    45 0x00002aaabcba47e6 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, unsigned int, double*, unsigned int) () from solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so
    46 0x00002aaabcba36c0 in cpp_call (pThis=0x2aaad40cee90, aVtableSlot=..., pReturnTypeRef=0x2474360, nParams=1, pParams=0x2aaad0009000, pUnoReturn=0x0, pUnoArgs=0x2aab3420ff10, ppUnoExc=0x2aab26a4e6a8) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:237
    47 0x00002aaabcba4203 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch (pUnoI=0x2aaad40cee90, pMemberDescr=0x2aaad0012980, pReturn=0x0, pArgs=0x2aab3420ff10, ppException=0x2aab26a4e6a8) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:430
    48 0x00002aaabe26515f in binaryurp::IncomingRequest::execute_throw (this=0x2aaad000b9a0, returnValue=0x2aab26a4eb10, outArguments=0x2aab26a4ea80) at binaryurp/source/incomingrequest.cxx:245
    49 0x00002aaabe26402f in binaryurp::IncomingRequest::execute (this=0x2aaad000b9a0) at binaryurp/source/incomingrequest.cxx:74
    50 0x00002aaabe27f3f1 in binaryurp::(anonymous namespace)::request (pThreadSpecificData=0x2aaad000b9a0) at binaryurp/source/reader.cxx:87
    51 0x00002aaaab539286 in cppu_threadpool::JobQueue::enter (this=0x2aaad00098b0, nDisposeId=46913122473968, bReturnWhenNoJob=1 '\001') at cppu/source/threadpool/jobqueue.cxx:115
    52 0x00002aaaab53cb7d in cppu_threadpool::ORequestThread::run (this=0x2aaad00017f0) at cppu/source/threadpool/thread.cxx:172
    53 0x00002aaaab53d363 in osl::threadFunc (param=0x2aaad0001800) at include/osl/thread.hxx:187
    54 0x00002aaaaaac85fb in osl_thread_start_Impl (pData=0x2aaad0007050) at sal/osl/unx/thread.c:251
    55 0x000000396e407d15 in start_thread () from /lib64/libpthread.so.0
    56 0x000000396e0f248d in clone () from /lib64/libc.so.6
    
    (encountered with JunitTest_forms_unoapi) or
    
    13 <signal handler called>
    14 0x000000396e035ba5 in raise () from /lib64/libc.so.6
    15 0x000000396e037358 in abort () from /lib64/libc.so.6
    16 0x000000396e02e972 in __assert_fail_base () from /lib64/libc.so.6
    17 0x000000396e02ea22 in __assert_fail () from /lib64/libc.so.6
    18 0x00002aaaaee6e42f in ImplDbgTestSolarMutex () at vcl/source/app/dbggui.cxx:1750
    19 0x00002aaaae21cf1b in DbgFunc (nAction=15, pParam=0x0) at tools/source/debug/debug.cxx:1118
    20 0x00002aaaaf12bbb5 in DbgTestSolarMutex () at include/tools/debug.hxx:295
    21 0x00002aaaaf152433 in OutputDevice::ImplReleaseGraphics (this=0x2aab20eef8b0, bRelease=1 '\001') at vcl/source/gdi/outdev.cxx:704
    22 0x00002aaaaf2a9047 in VirtualDevice::~VirtualDevice (this=0x2aab20eef8b0, __in_chrg=<optimized out>) at vcl/source/gdi/virdev.cxx:187
    23 0x00002aaaaf2a919c in VirtualDevice::~VirtualDevice (this=0x2aab20eef8b0, __in_chrg=<optimized out>) at vcl/source/gdi/virdev.cxx:202
    24 0x00002aaacecbb264 in ImpEditEngine::~ImpEditEngine (this=0x2aab20eef130, __in_chrg=<optimized out>) at editeng/source/editeng/impedit2.cxx:182
    25 0x00002aaacecbb614 in ImpEditEngine::~ImpEditEngine (this=0x2aab20eef130, __in_chrg=<optimized out>) at editeng/source/editeng/impedit2.cxx:184
    26 0x00002aaacec6bd51 in EditEngine::~EditEngine (this=0x2aab20eef0d0, __in_chrg=<optimized out>) at editeng/source/editeng/editeng.cxx:110
    27 0x00002aab34256039 in frm::RichTextEngine::~RichTextEngine (this=0x2aab20eef0d0, __in_chrg=<optimized out>) at forms/source/richtext/richtextengine.cxx:108
    28 0x00002aab3425609c in frm::RichTextEngine::~RichTextEngine (this=0x2aab20eef0d0, __in_chrg=<optimized out>) at forms/source/richtext/richtextengine.cxx:111
    29 0x00002aab3426b3fe in std::auto_ptr<frm::RichTextEngine>::reset (this=0x2aaabd4cb210, __p=0x0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/backward/auto_ptr.h:244
    30 0x00002aab34268a64 in frm::ORichTextModel::~ORichTextModel (this=0x2aaabd4cae08, __in_chrg=<optimized out>) at forms/source/richtext/richtextmodel.cxx:219
    31 0x00002aab34268d60 in frm::ORichTextModel::~ORichTextModel (this=0x2aaabd4cae08, __in_chrg=<optimized out>) at forms/source/richtext/richtextmodel.cxx:225
    32 0x00002aaaab8bd763 in cppu::OWeakObject::release (this=0x2aaabd4cae08) at cppuhelper/source/weak.cxx:204
    33 0x00002aaaab8bdc20 in cppu::OWeakAggObject::release (this=0x2aaabd4cae08) at cppuhelper/source/weak.cxx:274
    34 0x00002aaaab805212 in cppu::OComponentHelper::release (this=0x2aaabd4cae08) at cppuhelper/source/component.cxx:113
    35 0x00002aab340edb6c in frm::OControlModel::release (this=0x2aaabd4cae08) at forms/source/inc/FormComponent.hxx:408
    36 0x00002aab3426ae18 in frm::ORichTextModel::release (this=0x2aaabd4cae08) at forms/source/richtext/richtextmodel.hxx:106
    37 0x00002aaaab1d81cf in com::sun::star::uno::Reference<com::sun::star::beans::XPropertyState>::~Reference (this=0x2aaacfee10d0, __in_chrg=<optimized out>) at include/com/sun/star/uno/Reference.hxx:108
    38 0x00002aaaab1d2e69 in comphelper::OPropertySetAggregationHelper::~OPropertySetAggregationHelper (this=0x2aaacfee1068, __in_chrg=<optimized out>) at comphelper/source/property/propagg.cxx:451
    39 0x00002aab34184f55 in frm::OControlModel::~OControlModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/FormComponent.cxx:669
    40 0x00002aab34189425 in frm::OBoundControlModel::~OBoundControlModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/FormComponent.cxx:1316
    41 0x00002aab3414bac5 in frm::OEditBaseModel::~OEditBaseModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/EditBase.cxx:75
    42 0x00002aab3414ee79 in frm::OEditModel::~OEditModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/Edit.cxx:318
    43 0x00002aab3414eef8 in frm::OEditModel::~OEditModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/Edit.cxx:327
    44 0x00002aaaab8bd763 in cppu::OWeakObject::release (this=0x2aaacfee1008) at cppuhelper/source/weak.cxx:204
    45 0x00002aaaab8bdc20 in cppu::OWeakAggObject::release (this=0x2aaacfee1008) at cppuhelper/source/weak.cxx:274
    46 0x00002aaaab805212 in cppu::OComponentHelper::release (this=0x2aaacfee1008) at cppuhelper/source/component.cxx:113
    47 0x00002aab340edb6c in frm::OControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:408
    48 0x00002aab340f8a38 in frm::OBoundControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:1025
    49 0x00002aaaab7ed45d in com::sun::star::uno::Reference<com::sun::star::uno::XInterface>::~Reference (this=0x7fff8d7a2cd0, __in_chrg=<optimized out>) at include/com/sun/star/uno/Reference.hxx:108
    50 0x00002aaaab8051f3 in cppu::OComponentHelper::release (this=0x2aaacfee1008) at cppuhelper/source/component.cxx:107
    51 0x00002aab340edb6c in frm::OControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:408
    52 0x00002aab340f8a38 in frm::OBoundControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:1025
    53 0x00002aaabcba6224 in bridges::cpp_uno::shared::freeUnoInterfaceProxy (pEnv=0x2aaac80009e0, pProxy=0x2aab20ef5470) at bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:43
    54 0x00002aaaab56f35c in (anonymous namespace)::s_stub_defenv_revokeInterface (pParam=0x7fff8d7a2f78) at cppu/source/uno/lbenv.cxx:390
    55 0x00002aaaab56ad4f in s_environment_invoke_v (pCurrEnv=0x0, pTargetEnv=0x2aaac80009e0, pCallee=0x2aaaab56f008 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>, pParam=0x7fff8d7a2f78) at cppu/source/uno/EnvStack.cxx:292
    56 0x00002aaaab56adf8 in uno_Environment_invoke_v (pTargetEnv=0x2aaac80009e0, pCallee=0x2aaaab56f008 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>, pParam=0x7fff8d7a2f78) at cppu/source/uno/EnvStack.cxx:311
    57 0x00002aaaab56aeb8 in uno_Environment_invoke (pEnv=0x2aaac80009e0, pCallee=0x2aaaab56f008 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>) at cppu/source/uno/EnvStack.cxx:320
    58 0x00002aaaab56f704 in (anonymous namespace)::defenv_revokeInterface (pEnv=0x2aaac80009e0, pInterface=0x2aab20ef5470) at cppu/source/uno/lbenv.cxx:446
    59 0x00002aaabcba634a in bridges::cpp_uno::shared::releaseProxy (pUnoI=0x2aab20ef5470) at bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:85
    60 0x00002aaabe24dbd3 in com::sun::star::uno::UnoInterfaceReference::~UnoInterfaceReference (this=0x2aaad011eac8, __in_chrg=<optimized out>) at include/uno/dispatcher.hxx:88
    61 0x00002aaabe24edd8 in binaryurp::Bridge::SubStub::~SubStub (this=0x2aaad011eac8, __in_chrg=<optimized out>) at binaryurp/source/bridge.cxx:167
    62 0x00002aaabe24eea3 in std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>::~pair (this=0x2aaad011eac0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_pair.h:88
    63 0x00002aaabe25a32e in std::_Rb_tree_node<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >::~_Rb_tree_node (this=0x2aaad011eaa0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:130
    64 0x00002aaabe25a34c in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::destroy<std::_Rb_tree_node<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > (this=0x2aaad011eb08, __p=0x2aaad011eaa0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/new_allocator.h:114
    65 0x00002aaabe258ad9 in std::_Rb_tree<com::sun::star::uno::TypeDescription, std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>, std::_Select1st<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::_M_destroy_node (this=0x2aaad011eb08, __p=0x2aaad011eaa0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:419
    66 0x00002aaabe2566d5 in std::_Rb_tree<com::sun::star::uno::TypeDescription, std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>, std::_Select1st<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::_M_erase (this=0x2aaad011eb08, __x=0x2aaad011eaa0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1084
    67 0x00002aaabe254656 in std::_Rb_tree<com::sun::star::uno::TypeDescription, std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>, std::_Select1st<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::~_Rb_tree (this=0x2aaad011eb08, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:646
    68 0x00002aaabe2519d4 in std::__cxx1998::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::~map (this=0x2aaad011eb08, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_map.h:90
    69 0x00002aaabe251a70 in std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::~map (this=0x2aaad011eb08, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/debug/map.h:107
    70 0x00002aaabe24ef78 in std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >::~pair (this=0x2aaad011eb00, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_pair.h:88
    71 0x00002aaabe25a168 in std::_Rb_tree_node<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >::~_Rb_tree_node (this=0x2aaad011eae0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:130
    72 0x00002aaabe25a186 in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::destroy<std::_Rb_tree_node<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > > (this=0x7fff8d7a3470, __p=0x2aaad011eae0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/new_allocator.h:114
    73 0x00002aaabe2584ef in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_destroy_node (this=0x7fff8d7a3470, __p=0x2aaad011eae0) at /usr
 /lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:419
    74 0x00002aaabe255bc1 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad011eae0) at /usr/lib/gc
 c/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1084
    75 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad0012f10) at /usr/lib/gc
 c/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082
    76 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad0012a60) at /usr/lib/gc
 c/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082
    77 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad002ec50) at /usr/lib/gc
 c/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082
    78 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad001ca70) at /usr/lib/gc
 c/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082
    79 0x00002aaabe2537e8 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::~_Rb_tree (this=0x7fff8d7a3470, __in_chrg=<optimized out>) at /us
 r/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:646
    80 0x00002aaabe25033a in std::__cxx1998::map<rtl::OUString, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::~map (this=0x7fff8d7a3470, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_map.h:90
    81 0x00002aaabe2503d6 in std::__debug::map<rtl::OUString, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::~map (this=0x7fff8d7a3470, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/debug/map.h:107
    82 0x00002aaabe2468ec in binaryurp::Bridge::terminate (this=0x2aaabd5aa670, final=true) at binaryurp/source/bridge.cxx:332
    83 0x00002aaabe24af19 in binaryurp::Bridge::dispose (this=0x2aaabd5aa670) at binaryurp/source/bridge.cxx:920
    84 0x00002aaabddfc85d in desktop::Acceptor::~Acceptor (this=0x2aaabd3ea6d0, __in_chrg=<optimized out>) at desktop/source/offacc/acceptor.cxx:88
    85 0x00002aaabddfca52 in desktop::Acceptor::~Acceptor (this=0x2aaabd3ea6d0, __in_chrg=<optimized out>) at desktop/source/offacc/acceptor.cxx:90
    86 0x00002aaaab8bd763 in cppu::OWeakObject::release (this=0x2aaabd3ea6d0) at cppuhelper/source/weak.cxx:204
    87 0x00002aaabde05f7e in cppu::WeakImplHelper2<com::sun::star::lang::XServiceInfo, com::sun::star::lang::XInitialization>::release (this=0x2aaabd3ea6d0) at include/cppuhelper/implbase2.hxx:106
    88 0x00002aaaaad7d4fb in com::sun::star::uno::Reference<com::sun::star::lang::XInitialization>::~Reference (this=0x16790f8, __in_chrg=<optimized out>) at include/com/sun/star/uno/Reference.hxx:108
    89 0x00002aaaaad846f8 in std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >::~pair (this=0x16790f0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_pair.h:88
    90 0x00002aaaaad8834e in std::_Rb_tree_node<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >::~_Rb_tree_node (this=0x16790d0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:130
    91 0x00002aaaaad8836c in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::destroy<std::_Rb_tree_node<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > > (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>, __p=0x16790d0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/new_allocator.h:114
    92 0x00002aaaaad87fdb in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >, std::_Select1st<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::_M_destroy_node (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>, __p=0x16790d0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:419
    93 0x00002aaaaad878a5 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >, std::_Select1st<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::_M_erase (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>, __x=0x16790d0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1084
    94 0x00002aaaaad87625 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >, std::_Select1st<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::clear (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:816
    95 0x00002aaaaad865b4 in std::__cxx1998::map<rtl::OUString, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization>, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::clear (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_map.h:716
    96 0x00002aaaaad85670 in std::__debug::map<rtl::OUString, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization>, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::clear (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/debug/map.h:351
    97 0x00002aaaaad83453 in desktop::Desktop::DeregisterServices (this=0x7fff8d7a43e0) at desktop/source/app/appinit.cxx:255
    98 0x00002aaaaad643e3 in desktop::Desktop::doShutdown (this=0x7fff8d7a43e0) at desktop/source/app/app.cxx:1804
    99 0x00002aaaaad63680 in desktop::Desktop::Main (this=0x7fff8d7a43e0) at desktop/source/app/app.cxx:1753
    100 0x00002aaaaee9b0dd in ImplSVMain () at vcl/source/app/svmain.cxx:162
    101 0x00002aaaaee9b1c6 in SVMain () at vcl/source/app/svmain.cxx:198
    102 0x00002aaaaada6616 in soffice_main () at desktop/source/app/sofficemain.cxx:82
    103 0x0000000000400968 in sal_main () at desktop/source/app/main.c:48
    104 0x0000000000400949 in main (argc=9, argv=0x7fff8d7a45c8) at desktop/source/app/main.c:47
    
    (encountered with JunitTest_sc_unoapi), and more, so lock the SolarMutex at the
    "entrance" to the relevant stack traces.
    
    Change-Id: I017acf2886b813adb4d44562c5f1e22dd24aa884

diff --git a/forms/source/component/FormattedFieldWrapper.cxx b/forms/source/component/FormattedFieldWrapper.cxx
index db2af5c..19f5dae 100644
--- a/forms/source/component/FormattedFieldWrapper.cxx
+++ b/forms/source/component/FormattedFieldWrapper.cxx
@@ -259,6 +259,7 @@ void SAL_CALL OFormattedFieldWrapper::write(const Reference<XObjectOutputStream>
 //------------------------------------------------------------------
 void SAL_CALL OFormattedFieldWrapper::read(const Reference<XObjectInputStream>& _rxInStream) throw( IOException, RuntimeException )
 {
+    SolarMutexGuard g;
     if (m_xAggregate.is())
     {   //  we alread did a decision if we're an EditModel or a FormattedModel
 
diff --git a/forms/source/component/Grid.cxx b/forms/source/component/Grid.cxx
index cfa4d1b..29f3b58 100644
--- a/forms/source/component/Grid.cxx
+++ b/forms/source/component/Grid.cxx
@@ -365,6 +365,7 @@ void OGridControlModel::removeSelectionChangeListener(const Reference< XSelectio
 //------------------------------------------------------------------------------
 Reference<XPropertySet> SAL_CALL OGridControlModel::createColumn(const OUString& ColumnType) throw ( :: com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
 {
+    SolarMutexGuard g;
     const Sequence< OUString >& rColumnTypes = frm::getColumnTypes();
     return createColumn( ::detail::findPos( ColumnType, rColumnTypes ) );
 }
@@ -994,6 +995,7 @@ void OGridControlModel::write(const Reference<XObjectOutputStream>& _rxOutStream
 //------------------------------------------------------------------------------
 void OGridControlModel::read(const Reference<XObjectInputStream>& _rxInStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
 {
+    SolarMutexGuard g;
     OControlModel::read(_rxInStream);
 
     Reference<XMarkableStream>  xMark(_rxInStream, UNO_QUERY);
diff --git a/forms/source/richtext/richtextmodel.cxx b/forms/source/richtext/richtextmodel.cxx
index 15dc234..9d8c4aa 100644
--- a/forms/source/richtext/richtextmodel.cxx
+++ b/forms/source/richtext/richtextmodel.cxx
@@ -215,6 +215,7 @@ namespace frm
         }
         if ( m_pEngine.get() )
         {
+            SolarMutexGuard g;
             SfxItemPool* pPool = m_pEngine->getPool();
             m_pEngine.reset();
             SfxItemPool::Free(pPool);
commit 65da24773fffea4e4bc81adfa265378064186488
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed May 22 16:16:03 2013 +0200

    Be more picky about Mac OS X linker warnings
    
    ...useful for cases like 913ba61d008c6629272ba3df8d22dbff0e2dc4f9 "Make liborcus
    -fvisibility setting consistent with LO one."
    
    Feel free to revert if it causes trouble, though.  (I was only able to test it
    with a 10.7 build, not a 10.6 baseline one.)
    
    Change-Id: Ic8e57cd917ef186f4dec8d876fc8da6d6db57b3d

diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index eb03018..1da614b 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -91,6 +91,7 @@ gb_OBJCXXFLAGS := -x objective-c++ -fobjc-exceptions
 gb_OBJCFLAGS := -x objective-c -fobjc-exceptions
 
 gb_LinkTarget_LDFLAGS := \
+	-Wl,-fatal_warnings \
 	$(SOLARLIB) \
 #man ld says: obsolete	-Wl,-multiply_defined,suppress \
 
commit 913ba61d008c6629272ba3df8d22dbff0e2dc4f9
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed May 22 16:09:33 2013 +0200

    Make liborcus -fvisibility setting consistent with LO one
    
    Esp. since LO links against a liborcus.a, this would otherwise cause linker
    warnings like
    
      ld: warning: direct access in orcus::orcus_xml::read_file(char const*) to
      global weak symbol boost::unordered_detail::prime_list_template<unsigned
      long>::value means the weak symbol cannot be overridden at runtime. This was
      likely caused by different translation units being compiled with different
      visibility settings.
    
    on Mac OS X (where HAVE_GCC_VISIBILITY_FEATURE is unset).
    
    Change-Id: I6f09b61aa77b6d5c3f8b53407d8faff4fb3bb8a1

diff --git a/liborcus/UnpackedTarball_liborcus.mk b/liborcus/UnpackedTarball_liborcus.mk
index e43144d..cb61573 100644
--- a/liborcus/UnpackedTarball_liborcus.mk
+++ b/liborcus/UnpackedTarball_liborcus.mk
@@ -26,6 +26,10 @@ ifeq ($(OS),MACOSX)
 liborcus_patches += liborcus_0.1.0-tac.patch
 endif
 
+ifneq ($(HAVE_GCC_VISIBILITY_FEATURE),TRUE)
+liborcus_patches += visibility.patch
+endif
+
 # <https://gitorious.org/orcus/orcus/merge_requests/2#
 # f60d6eecee72349993a392a9a63ddf3383d3b8c8-
 # f60d6eecee72349993a392a9a63ddf3383d3b8c8 at 2>:
diff --git a/liborcus/visibility.patch b/liborcus/visibility.patch
new file mode 100644
index 0000000..a5af639
--- /dev/null
+++ b/liborcus/visibility.patch
@@ -0,0 +1,11 @@
+--- configure
++++ configure
+@@ -3211,7 +3211,7 @@
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ 
+-CXXFLAGS="$CXXFLAGS -O2 -fvisibility=hidden -Wall"
++CXXFLAGS="$CXXFLAGS -O2 -Wall"
+ 
+ # ===========================
+ # Find required base packages
commit d003010030b0ca5b828d1c6bf02be6dd350375f2
Author: Andras Timar <atimar at suse.com>
Date:   Wed May 22 14:50:18 2013 +0200

    Updated core
    Project: dictionaries  5f7183ff8e2358287bd99b64d7036475f1f0ff6a

diff --git a/dictionaries b/dictionaries
index 09bd32f7..5f7183f 160000
--- a/dictionaries
+++ b/dictionaries
@@ -1 +1 @@
-Subproject commit 09bd32f75110b15e6be8a7bfc116535cead5682b
+Subproject commit 5f7183ff8e2358287bd99b64d7036475f1f0ff6a
commit 9fa7dd98ccf91a2862f4c61d5d94aff2a1bbe4bf
Author: Noel Grandin <noel at peralex.com>
Date:   Wed May 22 15:46:15 2013 +0200

    fix Mac build
    
    Change-Id: I7870cabf5a241d5255f0b2a6cf995c17b664fd27

diff --git a/framework/source/dispatch/closedispatcher.cxx b/framework/source/dispatch/closedispatcher.cxx
index 2ff7916..6a87dfb 100644
--- a/framework/source/dispatch/closedispatcher.cxx
+++ b/framework/source/dispatch/closedispatcher.cxx
@@ -388,7 +388,7 @@ IMPL_LINK_NOARG(CloseDispatcher, impl_asyncCallback)
         // get quickstart service
         try
         {
-            css::uno::Reference< css::beans::XFastPropertySet > xSet( xSMGR->createInstance(IMPLEMENTATIONNAME_QUICKLAUNCHER), css::uno::UNO_QUERY_THROW );
+            css::uno::Reference< css::beans::XFastPropertySet > xSet( xContext->getServiceManager()->createInstanceWithContext(IMPLEMENTATIONNAME_QUICKLAUNCHER, xContext), css::uno::UNO_QUERY_THROW );
             if( xSet.is() )
             {
                 css::uno::Any aVal( xSet->getFastPropertyValue( 0 ) );
commit a726677724a5a8dd6ae39d5a7a829c2ed62f3efd
Author: Noel Grandin <noel at peralex.com>
Date:   Wed May 22 11:08:43 2013 +0200

    fdo#46808, Convert XMultiServiceFactory to XComponentContext
    
    Change-Id: Ib5e6fb4d6a4ff8f2bd315f19bde5028be2c569ea

diff --git a/framework/inc/uielement/genericstatusbarcontroller.hxx b/framework/inc/uielement/genericstatusbarcontroller.hxx
index bc4a71d..59548a2 100644
--- a/framework/inc/uielement/genericstatusbarcontroller.hxx
+++ b/framework/inc/uielement/genericstatusbarcontroller.hxx
@@ -30,7 +30,7 @@ struct AddonStatusbarItemData;
 class GenericStatusbarController : public svt::StatusbarController
 {
     public:
-        GenericStatusbarController( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rServiceManager,
+        GenericStatusbarController( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext,
                                     const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame,
                                     const com::sun::star::uno::Reference< com::sun::star::ui::XStatusbarItem >& rxItem,
                                     AddonStatusbarItemData *pItemData );
diff --git a/framework/inc/uielement/langselectionstatusbarcontroller.hxx b/framework/inc/uielement/langselectionstatusbarcontroller.hxx
index 71896ef..0f7a77d 100644
--- a/framework/inc/uielement/langselectionstatusbarcontroller.hxx
+++ b/framework/inc/uielement/langselectionstatusbarcontroller.hxx
@@ -42,7 +42,7 @@ namespace framework {
 class LangSelectionStatusbarController : public svt::StatusbarController
 {
     public:
-        explicit LangSelectionStatusbarController( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceManager );
+        explicit LangSelectionStatusbarController( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext );
 
         // XServiceInfo
         DECLARE_XSERVICEINFO
diff --git a/framework/source/uielement/addonstoolbarmanager.cxx b/framework/source/uielement/addonstoolbarmanager.cxx
index 0bde95d..6723b95 100644
--- a/framework/source/uielement/addonstoolbarmanager.cxx
+++ b/framework/source/uielement/addonstoolbarmanager.cxx
@@ -41,6 +41,7 @@
 #include <com/sun/star/frame/XToolbarController.hpp>
 #include <com/sun/star/frame/XDispatchProvider.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/frame/XLayoutManager.hpp>
 #include <com/sun/star/ui/DockingArea.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
diff --git a/framework/source/uielement/genericstatusbarcontroller.cxx b/framework/source/uielement/genericstatusbarcontroller.cxx
index 4b4d721..4140ab8 100644
--- a/framework/source/uielement/genericstatusbarcontroller.cxx
+++ b/framework/source/uielement/genericstatusbarcontroller.cxx
@@ -43,11 +43,11 @@ namespace framework
 {
 
 GenericStatusbarController::GenericStatusbarController(
-    const Reference< XMultiServiceFactory >& rxServiceManager,
+    const Reference< XComponentContext >& rxContext,
     const Reference< XFrame >& rxFrame,
     const Reference< ui::XStatusbarItem >& rxItem,
     AddonStatusbarItemData *pItemData )
-    : svt::StatusbarController( rxServiceManager, rxFrame, OUString(), 0 )
+    : svt::StatusbarController( rxContext, rxFrame, OUString(), 0 )
     , m_bEnabled( sal_False )
     , m_bOwnerDraw( sal_False )
     , m_pItemData( pItemData )
diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx
index 09c0a3d..8773c81 100644
--- a/framework/source/uielement/langselectionstatusbarcontroller.cxx
+++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx
@@ -44,8 +44,6 @@
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XDispatch.hpp>
 #include <com/sun/star/frame/XDispatchProvider.hpp>
-#include <com/sun/star/util/URLTransformer.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
 #include <comphelper/processfactory.hxx>
 
 #include <toolkit/helper/vclunohelper.hxx>
@@ -75,7 +73,7 @@ using ::rtl::OUStringBuffer;
 namespace framework
 {
 
-DEFINE_XSERVICEINFO_MULTISERVICE        (   LangSelectionStatusbarController            ,
+DEFINE_XSERVICEINFO_MULTISERVICE_2      (   LangSelectionStatusbarController            ,
                                             OWeakObject                             ,
                                             SERVICENAME_STATUSBARCONTROLLER         ,
                                             IMPLEMENTATIONNAME_LANGSELECTIONSTATUSBARCONTROLLER
@@ -83,11 +81,11 @@ DEFINE_XSERVICEINFO_MULTISERVICE        (   LangSelectionStatusbarController
 
 DEFINE_INIT_SERVICE                     (   LangSelectionStatusbarController, {} )
 
-LangSelectionStatusbarController::LangSelectionStatusbarController( const uno::Reference< lang::XMultiServiceFactory >& xServiceManager ) :
-    svt::StatusbarController( xServiceManager, uno::Reference< frame::XFrame >(), OUString(), 0 ),
+LangSelectionStatusbarController::LangSelectionStatusbarController( const uno::Reference< uno::XComponentContext >& xContext ) :
+    svt::StatusbarController( xContext, uno::Reference< frame::XFrame >(), OUString(), 0 ),
     m_bShowMenu( sal_True ),
     m_nScriptType( LS_SCRIPT_LATIN | LS_SCRIPT_ASIAN | LS_SCRIPT_COMPLEX ),
-    m_aLangGuessHelper( comphelper::getComponentContext(xServiceManager) )
+    m_aLangGuessHelper( xContext )
 {
 }
 
@@ -114,9 +112,9 @@ throw (::com::sun::star::uno::RuntimeException)
         return;
 
     //add context menu
-    Reference< awt::XPopupMenu > xPopupMenu( awt::PopupMenu::create( comphelper::getComponentContext(m_xServiceManager) ) );
+    Reference< awt::XPopupMenu > xPopupMenu( awt::PopupMenu::create( m_xContext ) );
     //sub menu that contains all items except the last two items: Separator + Set Language for Paragraph
-    Reference< awt::XPopupMenu > subPopupMenu( awt::PopupMenu::create( comphelper::getComponentContext(m_xServiceManager) ) );
+    Reference< awt::XPopupMenu > subPopupMenu( awt::PopupMenu::create( m_xContext ) );
 
     SvtLanguageTable    aLanguageTable;
 
diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx
index b6ba246..2b096a5 100644
--- a/framework/source/uielement/statusbarmanager.cxx
+++ b/framework/source/uielement/statusbarmanager.cxx
@@ -421,7 +421,7 @@ void StatusBarManager::CreateControllers()
                 // 3º) Is Add-on? Generic statusbar controller
                 if ( pItemData )
                 {
-                    pController = new GenericStatusbarController( uno::Reference<lang::XMultiServiceFactory>(m_xContext->getServiceManager(), uno::UNO_QUERY_THROW),
+                    pController = new GenericStatusbarController( m_xContext,
                                                                   m_xFrame,
                                                                   xStatusbarItem,
                                                                   pItemData );
@@ -429,7 +429,7 @@ void StatusBarManager::CreateControllers()
                 else
                 {
                     // 4º) Default Statusbar controller
-                    pController = new svt::StatusbarController( uno::Reference<lang::XMultiServiceFactory>(m_xContext->getServiceManager(), uno::UNO_QUERY_THROW), m_xFrame, aCommandURL, nId );
+                    pController = new svt::StatusbarController( m_xContext, m_xFrame, aCommandURL, nId );
                 }
             }
 
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx
index fdbb17b..2ddcda5 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -40,6 +40,7 @@
 #include <com/sun/star/ui/DockingArea.hpp>
 #include <com/sun/star/graphic/XGraphic.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/frame/ModuleManager.hpp>
 #include <com/sun/star/frame/ToolbarControllerFactory.hpp>
 #include <com/sun/star/ui/GlobalAcceleratorConfiguration.hpp>
diff --git a/include/svtools/statusbarcontroller.hxx b/include/svtools/statusbarcontroller.hxx
index 9d094fa..3b0f5bd 100644
--- a/include/svtools/statusbarcontroller.hxx
+++ b/include/svtools/statusbarcontroller.hxx
@@ -21,13 +21,13 @@
 #define _SVTOOLS_STATUSBARCONTROLLER_HXX
 
 #include "svtools/svtdllapi.h"
-#include <com/sun/star/ui/XStatusbarItem.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/XDispatch.hpp>
 #include <com/sun/star/frame/XStatusbarController.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
 #include <com/sun/star/frame/XLayoutManager.hpp>
+#include <com/sun/star/ui/XStatusbarItem.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
 #include <cppuhelper/weak.hxx>
 #include <cppuhelper/interfacecontainer.hxx>
 #include <comphelper/broadcasthelper.hxx>
@@ -46,7 +46,7 @@ class SVT_DLLPUBLIC StatusbarController :
                             public ::cppu::OWeakObject
 {
     public:
-        StatusbarController( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rServiceManager,
+        StatusbarController( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext,
                              const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame,
                              const OUString& aCommandURL,
                              unsigned short       nID );
@@ -123,7 +123,7 @@ class SVT_DLLPUBLIC StatusbarController :
         unsigned short                                                                      m_nID;
         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >                 m_xFrame;
         ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >                  m_xParentWindow;
-        ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >    m_xServiceManager;
+        ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >        m_xContext;
         OUString                                                                       m_aCommandURL;
         URLToDispatchMap                                                                    m_aListenerMap;
         ::cppu::OMultiTypeInterfaceContainerHelper                                          m_aListenerContainer;   /// container for ALL Listener
diff --git a/reportdesign/source/ui/inc/statusbarcontroller.hxx b/reportdesign/source/ui/inc/statusbarcontroller.hxx
index 6e6fda9..91ff232 100644
--- a/reportdesign/source/ui/inc/statusbarcontroller.hxx
+++ b/reportdesign/source/ui/inc/statusbarcontroller.hxx
@@ -37,7 +37,7 @@ namespace rptui
         sal_uInt16      m_nSlotId;
         sal_uInt16      m_nId;
     public:
-        OStatusbarController(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB);
+        OStatusbarController(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxORB);
 
         static OUString getImplementationName_Static() throw( ::com::sun::star::uno::RuntimeException );
         static ::com::sun::star::uno::Sequence< OUString > getSupportedServiceNames_Static(void) throw( ::com::sun::star::uno::RuntimeException );
diff --git a/reportdesign/source/ui/misc/statusbarcontroller.cxx b/reportdesign/source/ui/misc/statusbarcontroller.cxx
index 9bb946e..4294d5b 100644
--- a/reportdesign/source/ui/misc/statusbarcontroller.cxx
+++ b/reportdesign/source/ui/misc/statusbarcontroller.cxx
@@ -69,15 +69,15 @@ Sequence< OUString> SAL_CALL OStatusbarController::getSupportedServiceNames() th
 // -------------------------------------------------------------------------
 Reference< XInterface > OStatusbarController::create(Reference< XComponentContext > const & xContext)
 {
-    return *(new OStatusbarController(Reference< XMultiServiceFactory >(xContext->getServiceManager(),UNO_QUERY)));
+    return *(new OStatusbarController(xContext));
 }
 IMPLEMENT_FORWARD_XINTERFACE2(OStatusbarController, ::svt::StatusbarController,OStatusbarController_BASE)
 
-OStatusbarController::OStatusbarController(const Reference< XMultiServiceFactory >& _rxORB)
-: m_nSlotId(0)
+OStatusbarController::OStatusbarController(const Reference< XComponentContext >& rxContext)
+: ::svt::StatusbarController(rxContext, Reference< XFrame >(), OUString(), 0)
+,m_nSlotId(0)
 ,m_nId(1)
 {
-    m_xServiceManager = _rxORB;
 }
 // -----------------------------------------------------------------------------
 void SAL_CALL OStatusbarController::initialize( const Sequence< Any >& _rArguments ) throw (Exception, RuntimeException)
diff --git a/svtools/source/uno/statusbarcontroller.cxx b/svtools/source/uno/statusbarcontroller.cxx
index d93feed..2f6fbba 100644
--- a/svtools/source/uno/statusbarcontroller.cxx
+++ b/svtools/source/uno/statusbarcontroller.cxx
@@ -22,6 +22,7 @@
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/frame/XDispatchProvider.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/frame/XLayoutManager.hpp>
 #include <com/sun/star/util/URLTransformer.hpp>
 #include <osl/mutex.hxx>
@@ -45,7 +46,7 @@ namespace svt
 {
 
 StatusbarController::StatusbarController(
-    const Reference< XMultiServiceFactory >& rServiceManager,
+    const Reference< XComponentContext >& rxContext,
     const Reference< XFrame >& xFrame,
     const OUString& aCommandURL,
     unsigned short nID ) :
@@ -54,7 +55,7 @@ StatusbarController::StatusbarController(
     ,   m_bDisposed( sal_False )
     ,   m_nID( nID )
     ,   m_xFrame( xFrame )
-    ,   m_xServiceManager( rServiceManager )
+    ,   m_xContext( rxContext )
     ,   m_aCommandURL( aCommandURL )
     ,   m_aListenerContainer( m_aMutex )
 {
@@ -82,9 +83,9 @@ Reference< XFrame > StatusbarController::getFrameInterface() const
 Reference< XURLTransformer > StatusbarController::getURLTransformer() const
 {
     SolarMutexGuard aSolarMutexGuard;
-    if ( !m_xURLTransformer.is() && m_xServiceManager.is() )
+    if ( !m_xURLTransformer.is() && m_xContext.is() )
     {
-        m_xURLTransformer = com::sun::star::util::URLTransformer::create( ::comphelper::getComponentContext(m_xServiceManager) );
+        m_xURLTransformer = com::sun::star::util::URLTransformer::create( m_xContext );
     }
 
     return m_xURLTransformer;
@@ -148,7 +149,12 @@ throw ( Exception, RuntimeException )
                 else if ( aPropValue.Name == "CommandURL" )
                     aPropValue.Value >>= m_aCommandURL;
                 else if ( aPropValue.Name == "ServiceManager" )
-                    aPropValue.Value >>= m_xServiceManager;
+                {
+                    Reference<XMultiServiceFactory> xMSF;
+                    aPropValue.Value >>= xMSF;
+                    if( xMSF.is() )
+                        m_xContext = comphelper::getComponentContext(xMSF);
+                }
                 else if ( aPropValue.Name == "ParentWindow" )
                     aPropValue.Value >>= m_xParentWindow;
                 else if ( aPropValue.Name == "Identifier" )
@@ -219,7 +225,7 @@ throw (::com::sun::star::uno::RuntimeException)
 
     // release references
     m_xURLTransformer.clear();
-    m_xServiceManager.clear();
+    m_xContext.clear();
     m_xFrame.clear();
     m_xParentWindow.clear();
     m_xStatusbarItem.clear();
@@ -373,7 +379,7 @@ void StatusbarController::addStatusListener( const OUString& aCommandURL )
         {
             // Add status listener directly as intialize has already been called.
             Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
-            if ( m_xServiceManager.is() && xDispatchProvider.is() )
+            if ( m_xContext.is() && xDispatchProvider.is() )
             {
                 Reference< XURLTransformer > xURLTransformer = getURLTransformer();
                 aTargetURL.Complete = aCommandURL;
@@ -426,7 +432,7 @@ void StatusbarController::bindListener()
 
         // Collect all registered command URL's and store them temporary
         Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
-        if ( m_xServiceManager.is() && xDispatchProvider.is() )
+        if ( m_xContext.is() && xDispatchProvider.is() )
         {
             xStatusListener = Reference< XStatusListener >( static_cast< OWeakObject* >( this ), UNO_QUERY );
             URLToDispatchMap::iterator pIter = m_aListenerMap.begin();
@@ -533,7 +539,7 @@ void StatusbarController::execute( const ::com::sun::star::uno::Sequence< ::com:
 
         if ( m_bInitialized &&
              m_xFrame.is() &&
-             m_xServiceManager.is() &&
+             m_xContext.is() &&
              !m_aCommandURL.isEmpty() )
         {
             xURLTransformer = getURLTransformer();
@@ -575,7 +581,7 @@ void StatusbarController::execute(
 
         if ( m_bInitialized &&
              m_xFrame.is() &&
-             m_xServiceManager.is() &&
+             m_xContext.is() &&
              !m_aCommandURL.isEmpty() )
         {
             Reference< XURLTransformer > xURLTransformer( getURLTransformer() );
commit fe1ac1bf904ec7905187c3c3a5fe6a90f31f94e7
Author: Noel Grandin <noel at peralex.com>
Date:   Tue May 21 17:38:02 2013 +0200

    fdo#46808, convert XMultiServiceFactory to XComponentContext
    
    Change-Id: I5ed0b12bf37e7d235fc88182c006a6ed07ef2343

diff --git a/framework/inc/classes/droptargetlistener.hxx b/framework/inc/classes/droptargetlistener.hxx
index 0a71804..0a7e7d2 100644
--- a/framework/inc/classes/droptargetlistener.hxx
+++ b/framework/inc/classes/droptargetlistener.hxx
@@ -41,7 +41,7 @@ class DropTargetListener : private ThreadHelpBase
     private:
 
         /// uno service manager to create necessary services
-        css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory;
+        css::uno::Reference< css::uno::XComponentContext > m_xContext;
         /// weakreference to target frame (Don't use a hard reference. Owner can't delete us then!)
         css::uno::WeakReference< css::frame::XFrame > m_xTargetFrame;
         /// drag/drop info
@@ -51,7 +51,7 @@ class DropTargetListener : private ThreadHelpBase
     // c++ interface
     public:
 
-         DropTargetListener( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory ,
+         DropTargetListener( const css::uno::Reference< css::uno::XComponentContext >& xContext ,
                              const css::uno::Reference< css::frame::XFrame >& xFrame                );
         ~DropTargetListener(                                                                        );
 
diff --git a/framework/inc/classes/propertysethelper.hxx b/framework/inc/classes/propertysethelper.hxx
index f414cf6..2bc4109 100644
--- a/framework/inc/classes/propertysethelper.hxx
+++ b/framework/inc/classes/propertysethelper.hxx
@@ -26,7 +26,6 @@
 #include <general.h>
 #include <stdtypes.h>
 
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/XPropertySetInfo.hpp>
 #include <com/sun/star/beans/PropertyExistException.hpp>
@@ -62,8 +61,6 @@ class FWI_DLLPUBLIC PropertySetHelper : public css::beans::XPropertySet
     /* member */
     protected:
 
-        css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
-
         PropertySetHelper::TPropInfoHash m_lProps;
 
         ListenerHash m_lSimpleChangeListener;
@@ -84,10 +81,6 @@ class FWI_DLLPUBLIC PropertySetHelper : public css::beans::XPropertySet
         //---------------------------------------------------------------------
         /** initialize new instance of this helper.
          *
-         *  @param  xSMGR
-         *          points to an uno service manager, which is used internaly to create own
-         *          needed uno services.
-         *
          *  @param  pExternalLock
          *          this helper must be used as a baseclass ...
          *          but then it should synchronize its own calls
@@ -101,8 +94,7 @@ class FWI_DLLPUBLIC PropertySetHelper : public css::beans::XPropertySet
          *  @param  bReleaseLockOnCall
          *          see member m_bReleaseLockOnCall
          */
-        PropertySetHelper(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR                       ,
-                                LockHelper*                                             pExternalLock               ,
+        PropertySetHelper(      LockHelper*                                             pExternalLock               ,
                                 TransactionManager*                                     pExternalTransactionManager ,
                                 sal_Bool                                                bReleaseLockOnCall          );
 
diff --git a/framework/inc/classes/taskcreator.hxx b/framework/inc/classes/taskcreator.hxx
index 44b5111..4a297f9 100644
--- a/framework/inc/classes/taskcreator.hxx
+++ b/framework/inc/classes/taskcreator.hxx
@@ -26,7 +26,7 @@
 #include <general.h>
 
 #include <com/sun/star/frame/XFramesSupplier.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
 
 #include <com/sun/star/uno/Reference.hxx>
 #include <rtl/ustring.hxx>
@@ -48,13 +48,13 @@ class TaskCreator : private ThreadHelpBase
     // member
     private:
 
-        css::uno::Reference< css::lang::XMultiServiceFactory >  m_xSMGR;
+        css::uno::Reference< css::uno::XComponentContext >  m_xContext;
 
     //_______________________
     // interface
     public:
 
-                 TaskCreator( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR );
+                 TaskCreator( const css::uno::Reference< css::uno::XComponentContext >& xContext );
         virtual ~TaskCreator(                                                                     );
 
         css::uno::Reference< css::frame::XFrame > createTask( const OUString& sName    ,
diff --git a/framework/inc/dispatch/closedispatcher.hxx b/framework/inc/dispatch/closedispatcher.hxx
index 5b8860f..96ef71c 100644
--- a/framework/inc/dispatch/closedispatcher.hxx
+++ b/framework/inc/dispatch/closedispatcher.hxx
@@ -35,7 +35,7 @@
 #include <com/sun/star/frame/XDispatchInformationProvider.hpp>
 #include <com/sun/star/util/URL.hpp>
 #include <com/sun/star/frame/XDispatchResultListener.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/frame/DispatchResultState.hpp>
 
 #include <cppuhelper/weak.hxx>
@@ -89,7 +89,7 @@ class CloseDispatcher : public css::lang::XTypeProvider
         /** @short reference to an uno service manager,
                    which can be used to create own needed
                    uno resources. */
-        css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
+        css::uno::Reference< css::uno::XComponentContext > m_xContext;
 
         //---------------------------------------
         /** @short  reference to the target frame, which should be
@@ -132,7 +132,7 @@ class CloseDispatcher : public css::lang::XTypeProvider
                     That makes an implementation (e.g. of listener support)
                     much more easier .-)
 
-            @param  xSMGR
+            @param  rxContext
                     an un oservice manager, which is needed to create uno resource
                     internaly.
 
@@ -142,9 +142,9 @@ class CloseDispatcher : public css::lang::XTypeProvider
             @param  sTarget
                     help us to find the right target for this close operation.
          */
-        CloseDispatcher(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR  ,
-                        const css::uno::Reference< css::frame::XFrame >&              xFrame ,
-                        const OUString&                                        sTarget);
+        CloseDispatcher(const css::uno::Reference< css::uno::XComponentContext >& rxContext  ,
+                        const css::uno::Reference< css::frame::XFrame >&          xFrame ,
+                        const OUString&                                           sTarget);
 
         //---------------------------------------
         /** @short  does nothing real. */
diff --git a/framework/inc/dispatch/dispatchinformationprovider.hxx b/framework/inc/dispatch/dispatchinformationprovider.hxx
index f39c680..cac9572 100644
--- a/framework/inc/dispatch/dispatchinformationprovider.hxx
+++ b/framework/inc/dispatch/dispatchinformationprovider.hxx
@@ -48,15 +48,15 @@ class DispatchInformationProvider : public  css::frame::XDispatchInformationProv
     // member
     private:
 
-        css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
+        css::uno::Reference< css::uno::XComponentContext > m_xContext;
         css::uno::WeakReference< css::frame::XFrame > m_xFrame;
 
     //_______________________
     // interface
     public:
 
-        DispatchInformationProvider(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR ,
-                                    const css::uno::Reference< css::frame::XFrame >&              xFrame);
+        DispatchInformationProvider(const css::uno::Reference< css::uno::XComponentContext >& xContext ,
+                                    const css::uno::Reference< css::frame::XFrame >&          xFrame);
 
         virtual ~DispatchInformationProvider();
 
diff --git a/framework/inc/dispatch/dispatchprovider.hxx b/framework/inc/dispatch/dispatchprovider.hxx
index 484e0fa..777463b 100644
--- a/framework/inc/dispatch/dispatchprovider.hxx
+++ b/framework/inc/dispatch/dispatchprovider.hxx
@@ -90,7 +90,7 @@ class DispatchProvider  :   // interfaces
     /* member */
     private:
         /// reference to global service manager to create new services
-        css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory;
+        css::uno::Reference< css::uno::XComponentContext > m_xContext;
         /// weakreference to owner frame (Don't use a hard reference. Owner can't delete us then!)
         css::uno::WeakReference< css::frame::XFrame > m_xFrame;
         /// different dispatcher to handle special dispatch calls, protocols or URLs (they will be created on demand.)
@@ -103,7 +103,7 @@ class DispatchProvider  :   // interfaces
         FWK_DECLARE_XINTERFACE
         FWK_DECLARE_XTYPEPROVIDER
 
-        DispatchProvider( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory ,
+        DispatchProvider( const css::uno::Reference< css::uno::XComponentContext >&     xContext ,
                           const css::uno::Reference< css::frame::XFrame >&              xFrame   );
 
         virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL                       queryDispatch  ( const css::util::URL&                                       aURL             ,
diff --git a/framework/inc/helper/oframes.hxx b/framework/inc/helper/oframes.hxx
index 04078b0..844a2f7 100644
--- a/framework/inc/helper/oframes.hxx
+++ b/framework/inc/helper/oframes.hxx
@@ -77,16 +77,14 @@ class OFrames   :   private ThreadHelpBase      ,   // Must be the first of base
 
             @seealso    -
 
-            @param      "xFactory"          , reference to factory which has created ouer owner(!). We can use these to create new uno-services.
-            @param      "xOwner"            , reference to ouer owner. We hold a wekreference to prevent us against cross-references!
-            @param      "pFrameContainer"   , pointer to shared framecontainer of owner. It's valid only, if weakreference is valid!
+            @param      xOwner            , reference to ouer owner. We hold a wekreference to prevent us against cross-references!
+            @param      pFrameContainer   , pointer to shared framecontainer of owner. It's valid only, if weakreference is valid!
             @return     -
 
             @onerror    -
         *//*-*****************************************************************************************************/
 
-         OFrames(   const   css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory        ,
-                    const   css::uno::Reference< css::frame::XFrame >&              xOwner          ,
+         OFrames(   const   css::uno::Reference< css::frame::XFrame >&              xOwner          ,
                             FrameContainer*                                         pFrameContainer );
 
         //---------------------------------------------------------------------------------------------------------
@@ -297,8 +295,7 @@ class OFrames   :   private ThreadHelpBase      ,   // Must be the first of base
 
     private:
 
-        static sal_Bool impldbg_checkParameter_OFramesCtor  (   const   css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory        ,
-                                                                const   css::uno::Reference< css::frame::XFrame >&              xOwner          ,
+        static sal_Bool impldbg_checkParameter_OFramesCtor  (   const   css::uno::Reference< css::frame::XFrame >&              xOwner          ,
                                                                         FrameContainer*                                         pFrameContainer );
         static sal_Bool impldbg_checkParameter_append       (   const   css::uno::Reference< css::frame::XFrame >&              xFrame          );
         static sal_Bool impldbg_checkParameter_remove       (   const   css::uno::Reference< css::frame::XFrame >&              xFrame          );
@@ -313,7 +310,6 @@ class OFrames   :   private ThreadHelpBase      ,   // Must be the first of base
 
     private:
 
-        css::uno::Reference< css::lang::XMultiServiceFactory >      m_xFactory                      ;   /// reference to global servicemanager
         css::uno::WeakReference< css::frame::XFrame >               m_xOwner                        ;   /// reference to owner of this instance (Hold no hard reference!)
         FrameContainer*                                             m_pFrameContainer               ;   /// with owner shared list to hold all direct children of an XFramesSupplier
         sal_Bool                                                    m_bRecursiveSearchProtection    ;   /// flag to protect against recursive searches of frames at parents
diff --git a/framework/inc/services/frame.hxx b/framework/inc/services/frame.hxx
index 492c398..1dc011e 100644
--- a/framework/inc/services/frame.hxx
+++ b/framework/inc/services/frame.hxx
@@ -129,8 +129,8 @@ class Frame :   // interfaces
         //---------------------------------------------------------------------------------------------------------
         //  constructor / destructor
         //---------------------------------------------------------------------------------------------------------
-                  Frame( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory );
-        virtual ~Frame(                                                                         );
+                  Frame( const css::uno::Reference< css::uno::XComponentContext >& xContext );
+        virtual ~Frame(                                                                     );
 
         //---------------------------------------------------------------------------------------------------------
         //  XInterface, XTypeProvider, XServiceInfo
@@ -365,7 +365,7 @@ class Frame :   // interfaces
 
     private:
 
-        static sal_Bool implcp_ctor                                (   const   css::uno::Reference< css::lang::XMultiServiceFactory >&             xFactory            );
+        static sal_Bool implcp_ctor                                (   const   css::uno::Reference< css::uno::XComponentContext >&                 xContext            );
         static sal_Bool implcp_setActiveFrame                      (   const   css::uno::Reference< css::frame::XFrame >&                          xFrame              );
         static sal_Bool implcp_addFrameActionListener              (   const   css::uno::Reference< css::frame::XFrameActionListener >&            xListener           );
         static sal_Bool implcp_removeFrameActionListener           (   const   css::uno::Reference< css::frame::XFrameActionListener >&            xListener           );
@@ -385,7 +385,7 @@ class Frame :   // interfaces
     //*************************************************************************************************************
     private:
 
-        css::uno::Reference< css::lang::XMultiServiceFactory >                  m_xFactory                          ;   /// reference to factory, which has create this instance
+        css::uno::Reference< css::uno::XComponentContext >                      m_xContext                          ;   /// reference to factory, which has create this instance
         css::uno::Reference< css::task::XStatusIndicatorFactory >               m_xIndicatorFactoryHelper           ;   /// reference to factory helper to create status indicator objects
         css::uno::WeakReference< css::task::XStatusIndicator >                  m_xIndicatorInterception            ;   /// points to an external set progress, which should be used instead of the internal one.
         css::uno::Reference< css::frame::XDispatchProvider >                    m_xDispatchHelper                   ;   /// helper for XDispatch/Provider and interception interfaces
@@ -416,10 +416,10 @@ class Frame :   // interfaces
 
         FrameContainer                                                          m_aChildFrameContainer              ;   /// array of child frames
 
-        inline css::uno::Reference< css::lang::XMultiServiceFactory > impl_getFactory()
+        inline css::uno::Reference< css::uno::XComponentContext > impl_getComponentContext()
         {
             ReadGuard aReadLock( m_aLock );
-            return m_xFactory;
+            return m_xContext;
         }
 
         inline OUString impl_getName()
diff --git a/framework/source/classes/droptargetlistener.cxx b/framework/source/classes/droptargetlistener.cxx
index 66e272b..1b00c54 100644
--- a/framework/source/classes/droptargetlistener.cxx
+++ b/framework/source/classes/droptargetlistener.cxx
@@ -41,10 +41,10 @@
 namespace framework
 {
 
-DropTargetListener::DropTargetListener( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory,
-                                        const css::uno::Reference< css::frame::XFrame >&              xFrame  )
+DropTargetListener::DropTargetListener( const css::uno::Reference< css::uno::XComponentContext >& xContext,
+                                        const css::uno::Reference< css::frame::XFrame >&          xFrame  )
         : ThreadHelpBase  ( &Application::GetSolarMutex() )
-        , m_xFactory      ( xFactory                      )
+        , m_xContext      ( xContext                      )
         , m_xTargetFrame  ( xFrame                        )
         , m_pFormats      ( new DataFlavorExVector        )
 {
@@ -54,8 +54,8 @@ DropTargetListener::DropTargetListener( const css::uno::Reference< css::lang::XM
 
 DropTargetListener::~DropTargetListener()
 {
-    m_xTargetFrame = css::uno::WeakReference< css::frame::XFrame >();
-    m_xFactory     = css::uno::Reference< css::lang::XMultiServiceFactory >();
+    m_xTargetFrame.clear();
+    m_xContext.clear();
     delete m_pFormats;
     m_pFormats = NULL;
 }
@@ -64,8 +64,8 @@ DropTargetListener::~DropTargetListener()
 
 void SAL_CALL DropTargetListener::disposing( const css::lang::EventObject& ) throw( css::uno::RuntimeException )
 {
-    m_xTargetFrame = css::uno::WeakReference< css::frame::XFrame >();
-    m_xFactory     = css::uno::Reference< css::lang::XMultiServiceFactory >();
+    m_xTargetFrame.clear();
+    m_xContext.clear();
 }
 
 // -----------------------------------------------------------------------------
@@ -212,7 +212,7 @@ void DropTargetListener::implts_OpenFile( const String& rFilePath )
     /* SAFE { */
     ReadGuard aReadLock(m_aLock);
     css::uno::Reference< css::frame::XFrame >         xTargetFrame( m_xTargetFrame.get(), css::uno::UNO_QUERY );
-    css::uno::Reference< css::util::XURLTransformer > xParser     ( css::util::URLTransformer::create(::comphelper::getComponentContext(m_xFactory)) );
+    css::uno::Reference< css::util::XURLTransformer > xParser     ( css::util::URLTransformer::create(m_xContext) );
     aReadLock.unlock();
     /* } SAFE */
     if (xTargetFrame.is() && xParser.is())
diff --git a/framework/source/classes/taskcreator.cxx b/framework/source/classes/taskcreator.cxx
index f9fb99f..69f33bb 100644
--- a/framework/source/classes/taskcreator.cxx
+++ b/framework/source/classes/taskcreator.cxx
@@ -37,12 +37,12 @@ namespace framework{
     @descr      We need a valid uno service manager to create or instanciate new services.
                 All other information to create frames or tasks come in on right interface methods.
 
-    @param      xSMGR
+    @param      xContext
                     points to the valid uno service manager
 *//*-*****************************************************************************************************/
-TaskCreator::TaskCreator( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR )
+TaskCreator::TaskCreator( const css::uno::Reference< css::uno::XComponentContext >& xContext )
     : ThreadHelpBase(       )
-    , m_xSMGR       ( xSMGR )
+    , m_xContext    ( xContext )
 {
 }
 
@@ -52,7 +52,7 @@ TaskCreator::TaskCreator( const css::uno::Reference< css::lang::XMultiServiceFac
 *//*-*****************************************************************************************************/
 TaskCreator::~TaskCreator()
 {
-    m_xSMGR.clear();
+    m_xContext.clear();
 }
 
 /*-****************************************************************************************************//**
@@ -63,7 +63,7 @@ css::uno::Reference< css::frame::XFrame > TaskCreator::createTask( const OUStrin
 {
     /* SAFE { */
     ReadGuard aReadLock( m_aLock );
-    css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = m_xSMGR;
+    css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
     aReadLock.unlock();
     /* } SAFE */
 
@@ -78,7 +78,7 @@ css::uno::Reference< css::frame::XFrame > TaskCreator::createTask( const OUStrin
            )
         {
             ::comphelper::ConfigurationHelper::readDirectKey(
-                comphelper::getComponentContext(xSMGR),
+                xContext,
                 "org.openoffice.Office.TabBrowse",
                 "TaskCreatorService",
                 "ImplementationName",
@@ -86,7 +86,7 @@ css::uno::Reference< css::frame::XFrame > TaskCreator::createTask( const OUStrin
         }
 
         xCreator = css::uno::Reference< css::lang::XSingleServiceFactory >(
-                    xSMGR->createInstance(sCreator), css::uno::UNO_QUERY_THROW);
+                    xContext->getServiceManager()->createInstanceWithContext(sCreator, xContext), css::uno::UNO_QUERY_THROW);
     }
     catch(const css::uno::Exception&)
     {}
@@ -97,13 +97,13 @@ css::uno::Reference< css::frame::XFrame > TaskCreator::createTask( const OUStrin
     // library then these class here ... Why we should not be able to create it ?
     if ( ! xCreator.is())
         xCreator = css::uno::Reference< css::lang::XSingleServiceFactory >(
-                    xSMGR->createInstance(IMPLEMENTATIONNAME_FWK_TASKCREATOR), css::uno::UNO_QUERY_THROW);
+                    xContext->getServiceManager()->createInstanceWithContext(IMPLEMENTATIONNAME_FWK_TASKCREATOR, xContext), css::uno::UNO_QUERY_THROW);
 
     css::uno::Sequence< css::uno::Any > lArgs(5);
     css::beans::NamedValue              aArg    ;
 
     aArg.Name    = OUString(ARGUMENT_PARENTFRAME);
-    aArg.Value <<= css::uno::Reference< css::frame::XFrame >( css::frame::Desktop::create( comphelper::getComponentContext(xSMGR) ), css::uno::UNO_QUERY_THROW);
+    aArg.Value <<= css::uno::Reference< css::frame::XFrame >( css::frame::Desktop::create( xContext ), css::uno::UNO_QUERY_THROW);
     lArgs[0]   <<= aArg;
 
     aArg.Name    = OUString(ARGUMENT_CREATETOPWINDOW);
diff --git a/framework/source/dispatch/closedispatcher.cxx b/framework/source/dispatch/closedispatcher.cxx
index 1fa0c57..2ff7916 100644
--- a/framework/source/dispatch/closedispatcher.cxx
+++ b/framework/source/dispatch/closedispatcher.cxx
@@ -72,12 +72,12 @@ DEFINE_XTYPEPROVIDER_4(CloseDispatcher                         ,
                        css::frame::XDispatch                   )
 
 //-----------------------------------------------
-CloseDispatcher::CloseDispatcher(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR  ,
-                                 const css::uno::Reference< css::frame::XFrame >&              xFrame ,
-                                 const OUString&                                        sTarget)
+CloseDispatcher::CloseDispatcher(const css::uno::Reference< css::uno::XComponentContext >& rxContext ,
+                                 const css::uno::Reference< css::frame::XFrame >&          xFrame ,
+                                 const OUString&                                           sTarget)
     : ThreadHelpBase     (&Application::GetSolarMutex()                   )
     , ::cppu::OWeakObject(                                                )
-    , m_xSMGR            (xSMGR                                           )
+    , m_xContext         (rxContext                                       )
     , m_aAsyncCallback   (LINK( this, CloseDispatcher, impl_asyncCallback))
     , m_lStatusListener  (m_aLock.getShareableOslMutex()                  )
     , m_pSysWindow(NULL)
@@ -282,7 +282,7 @@ IMPL_LINK_NOARG(CloseDispatcher, impl_asyncCallback)
 
     // BTW: Make some copies, which are needed later ...
     EOperation                                                  eOperation  = m_eOperation;
-    css::uno::Reference< css::lang::XMultiServiceFactory >      xSMGR       = m_xSMGR;
+    css::uno::Reference< css::uno::XComponentContext >          xContext    = m_xContext;
     css::uno::Reference< css::frame::XFrame >                   xCloseFrame (m_xCloseFrame.get(), css::uno::UNO_QUERY);
     css::uno::Reference< css::frame::XDispatchResultListener >  xListener   = m_xResultListener;
 
@@ -301,7 +301,7 @@ IMPL_LINK_NOARG(CloseDispatcher, impl_asyncCallback)
     // Analyze the environment a first time.
     // If we found some special cases, we can
     // make some decisions erliar!
-    css::uno::Reference< css::frame::XFramesSupplier > xDesktop( css::frame::Desktop::create(comphelper::getComponentContext(xSMGR)), css::uno::UNO_QUERY_THROW);
+    css::uno::Reference< css::frame::XFramesSupplier > xDesktop( css::frame::Desktop::create(xContext), css::uno::UNO_QUERY_THROW);
     FrameListAnalyzer aCheck1(xDesktop, xCloseFrame, FrameListAnalyzer::E_HELP | FrameListAnalyzer::E_BACKINGCOMPONENT);
 
     // a) If the curent frame (where the close dispatch was requested for) does not have
@@ -465,11 +465,11 @@ sal_Bool CloseDispatcher::implts_prepareFrameForClosing(const css::uno::Referenc
     {
         // SAFE -> ----------------------------------
         ReadGuard aReadLock(m_aLock);
-        css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR  = m_xSMGR;
+        css::uno::Reference< css::uno::XComponentContext > xContext  = m_xContext;
         aReadLock.unlock();
         // <- SAFE ----------------------------------
 
-        css::uno::Reference< css::frame::XFramesSupplier > xDesktop( css::frame::Desktop::create( comphelper::getComponentContext(xSMGR) ), css::uno::UNO_QUERY_THROW);
+        css::uno::Reference< css::frame::XFramesSupplier > xDesktop( css::frame::Desktop::create( xContext ), css::uno::UNO_QUERY_THROW);
         FrameListAnalyzer aCheck(xDesktop, xFrame, FrameListAnalyzer::E_ALL);
 
         sal_Int32 c = aCheck.m_lModelFrames.getLength();
@@ -533,8 +533,8 @@ sal_Bool CloseDispatcher::implts_establishBackingMode()
 {
     // SAFE -> ----------------------------------
     ReadGuard aReadLock(m_aLock);
-    css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR  = m_xSMGR;
-    css::uno::Reference< css::frame::XFrame >              xFrame (m_xCloseFrame.get(), css::uno::UNO_QUERY);
+    css::uno::Reference< css::uno::XComponentContext > xContext  = m_xContext;
+    css::uno::Reference< css::frame::XFrame >          xFrame (m_xCloseFrame.get(), css::uno::UNO_QUERY);
     aReadLock.unlock();
     // <- SAFE ----------------------------------
 
@@ -548,7 +548,7 @@ sal_Bool CloseDispatcher::implts_establishBackingMode()
     css::uno::Reference< css::awt::XWindow > xContainerWindow = xFrame->getContainerWindow();
 
     css::uno::Reference< css::frame::XController > xStartModule = css::frame::StartModule::createWithParentWindow(
-                        comphelper::getComponentContext(xSMGR), xContainerWindow);
+                        xContext, xContainerWindow);
 
     // Attention: You MUST(!) call setComponent() before you call attachFrame().
     css::uno::Reference< css::awt::XWindow > xBackingWin(xStartModule, css::uno::UNO_QUERY);
@@ -564,11 +564,11 @@ sal_Bool CloseDispatcher::implts_terminateApplication()
 {
     // SAFE -> ----------------------------------
     ReadGuard aReadLock(m_aLock);
-    css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = m_xSMGR;
+    css::uno::Reference< css::uno::XComponentContext > xContext = m_xContext;
     aReadLock.unlock();
     // <- SAFE ----------------------------------
 
-    css::uno::Reference< css::frame::XDesktop2 > xDesktop = css::frame::Desktop::create( comphelper::getComponentContext(xSMGR) );
+    css::uno::Reference< css::frame::XDesktop2 > xDesktop = css::frame::Desktop::create( xContext );
 
     return xDesktop->terminate();
 }

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list