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]
