--- a/callcontinuity/vcc/src/cvccdirector.cpp Mon Mar 15 12:39:55 2010 +0200
+++ b/callcontinuity/vcc/src/cvccdirector.cpp Wed Mar 31 21:20:05 2010 +0300
@@ -197,9 +197,14 @@
User::Leave( KErrNotFound );
}
+ iMandatoryPluginFailedError = KErrNone;
+
//MT: setting CVccDirector as observer to plugin
Initialize( *this, aSsObserver );
-
+
+ // Leave if mandatory plugins failed
+ User::LeaveIfError( iMandatoryPluginFailedError );
+
// save CCP monitor ; CCCEPluginMCCPObserver
const MCCPCSObserver& obs = static_cast<const MCCPCSObserver&>( aMonitor );
iCCPObserver = const_cast<MCCPCSObserver*>(&obs);
@@ -229,19 +234,28 @@
TRAPD( err, InitializeL( aMonitor, aSsObserver, *(iProviders[ i ]) ) );
RUBY_DEBUG1( "initialization err = %d", err );
- switch( err )
- {
- case KErrNone:
- iInitialisedPlugins.Append( pluginUid.iUid );
- //fall-through
- case KErrAlreadyExists:
- RUBY_DEBUG0( "-- VCC plugin initialization OK" );
- break;
- default:
- RUBY_DEBUG0( "-- VCC plugin initialization FAILED" );
- initSucceeded = EFalse;
- break;
- }
+ if ( KErrNone != err && KCSCallProviderPlugId == pluginUid.iUid ) // CS plugin mandatory
+ {
+ RUBY_DEBUG0( "-- Mandatory VCC plugin initialization FAILED" );
+ initSucceeded = EFalse;
+ iMandatoryPluginFailedError = err;
+ }
+ else
+ {
+ switch( err )
+ {
+ case KErrNone:
+ iInitialisedPlugins.Append( pluginUid.iUid );
+ //fall-through
+ case KErrAlreadyExists:
+ RUBY_DEBUG0( "-- VCC plugin initialization OK" );
+ break;
+ default:
+ RUBY_DEBUG0( "-- VCC plugin initialization FAILED" );
+ initSucceeded = EFalse;
+ break;
+ }
+ }
}
RUBY_DEBUG1( "-- VCC plugin nbr of initialized plugins:%d",