User: hr      
Date: 05/09/23 05:21:41

Modified:
 /dba/dbaccess/source/ui/browser/
  genericcontroller.cxx

Log:
 INTEGRATION: CWS dba201b (1.64.2); FILE MERGED
 2005/09/21 07:57:50 oj 1.64.2.3: RESYNC: (1.64-1.65); FILE MERGED
 2005/07/29 09:23:54 fs 1.64.2.2: #i52602# lock SolarMutex in ::dispatch
 2005/07/11 13:37:14 fs 1.64.2.1: merging CWS dba201 into CWS dba201b

File Changes:

Directory: /dba/dbaccess/source/ui/browser/
===========================================

File [changed]: genericcontroller.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/browser/genericcontroller.cxx?r1=1.65&r2=1.66
Delta lines:  +21 -2
--------------------
--- genericcontroller.cxx       8 Sep 2005 14:29:16 -0000       1.65
+++ genericcontroller.cxx       23 Sep 2005 12:21:38 -0000      1.66
@@ -150,6 +150,7 @@
        return sConfirmDeletionURL;
 }
 
+DBG_NAME(OGenericUnoController)
 // -------------------------------------------------------------------------
 OGenericUnoController::OGenericUnoController(const Reference< 
XMultiServiceFactory >& _rM)
        :OGenericUnoController_COMPBASE(m_aMutex)
@@ -165,6 +166,8 @@
     ,m_bDescribingSupportedFeatures( false )
 #endif
 {
+    DBG_CTOR(OGenericUnoController,NULL);
+
        try
        {
                m_xUrlTransformer = Reference< XURLTransformer > 
(_rM->createInstance(::rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer")),
 UNO_QUERY);
@@ -177,6 +180,8 @@
 // 
-----------------------------------------------------------------------------
 OGenericUnoController::~OGenericUnoController()
 {
+
+    DBG_DTOR(OGenericUnoController,NULL);
 }
 
 // 
-----------------------------------------------------------------------------
@@ -249,7 +254,7 @@
        {
                if ( ( *pIter >>= aValue ) && ( 0 == 
aValue.Name.compareToAscii( "Frame" ) ) )
                {
-                       aValue.Value >>= xFrame;
+            xFrame.set(aValue.Value,UNO_QUERY_THROW);
                }
         /* #i42316#
                else if ( ( *pIter >>= aValue ) && ( 0 == 
aValue.Name.compareToAscii( "ReadOnly" ) ) )
@@ -276,6 +281,8 @@
                        }
 
                        Construct( pParentWin );
+            if ( !getView() )
+                throw Exception(::rtl::OUString::createFromAscii("Window is 
null"),*this);
                }
                else
                {
@@ -707,6 +714,13 @@
 // -----------------------------------------------------------------------
 void OGenericUnoController::dispatch(const URL& _aURL, const Sequence< 
PropertyValue >& aArgs) throw(RuntimeException)
 {
+    ::vos::OGuard aSolarGuard( Application::GetSolarMutex() );
+    // Since the fix for #123967#, the SolarMutex is not locked anymore when 
the framework calls into
+    // here. So, lock it ourself. The real solution would be to lock it only 
in the places
+    // where it's needed, but a) this might turn out difficult, since we then 
also need to care
+    // for locking in the proper order (SolarMutex and m_aMutex), and b) this 
would be too many places
+    // for the time frame of the fix.
+    // #i52602# / [EMAIL PROTECTED] / 2005-07-29
        executeUnChecked(_aURL,aArgs);
 }
 
@@ -786,6 +800,10 @@
        // check out from all the objects we are listening
        // the frame
        stopFrameListening( );
+    m_xMasterDispatcher = NULL;
+    m_xSlaveDispatcher = NULL;
+    m_xCurrentFrame = NULL;
+    m_xMultiServiceFacatory = NULL;
 }
 
 // -----------------------------------------------------------------------
@@ -1283,6 +1301,7 @@
             aIter != m_aSupportedFeatures.end();
             ++aIter
         )
+        if ( aIter->second.GroupId != CommandGroup::INTERNAL )
         aCmdHashMap.insert( CommandHashMap::value_type( aIter->second.GroupId, 
0 ));
 
     Sequence< sal_Int16 > aCommandGroups( aCmdHashMap.size() );




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to