diff -r eede1356aa52 -r 0ba996a9b75d bluetoothengine/btsac/btrcc/src/btrccLinker.cpp --- a/bluetoothengine/btsac/btrcc/src/btrccLinker.cpp Thu Jul 15 18:50:18 2010 +0300 +++ b/bluetoothengine/btsac/btrcc/src/btrccLinker.cpp Thu Aug 19 10:05:41 2010 +0300 @@ -86,14 +86,35 @@ iRegisterVolumeChangeNotificationCounter = 0; if (iAccObserver.IsAvrcpVolCTSupported()) { - iAbsoluteVolController = CBTRCCAbsoluteVolumeLevelController::NewL(*iInterfaceSelector, *this); - TRACE_INFO((_L("CBTRCCLinker::ConstructL, absolute volume controller created."))) + TInt err = KErrNone; + TRAP(err, iAbsoluteVolController = CBTRCCAbsoluteVolumeLevelController::NewL(*iInterfaceSelector, *this)); + if( err ) + { + // Absolute volume controller creation failed, this means that we don't have volume controller + // but continue construct linker. + iAbsoluteVolController = NULL; + TRACE_INFO((_L("CBTRCCLinker::ConstructL, absolute volume controller creation failed %d, continue anyway."), err)) + } + else + { + TRACE_INFO((_L("CBTRCCLinker::ConstructL, absolute volume controller created."))) + } // If also legacy is configured into use, prepare to use it with legacy devices. if(iAccObserver.IsAvrcpLegacyVolCTSupported()) { - iLegacyVolController = CBTRCCLegacyVolumeLevelController::NewL(*iInterfaceSelector, *this); - TRACE_INFO((_L("CBTRCCLinker::ConstructL, legacy volume controller created."))) + TRAP(err, iLegacyVolController = CBTRCCLegacyVolumeLevelController::NewL(*iInterfaceSelector, *this)); + if( err ) + { + // Legacy volume controller creation failed, this means that we don't have volume controller + // but continue construct linker. + iLegacyVolController = NULL; + TRACE_INFO((_L("CBTRCCLinker::ConstructL, legacy volume controller creation failed %d, continue anyway."), err)) + } + else + { + TRACE_INFO((_L("CBTRCCLinker::ConstructL, legacy volume controller created."))) + } } } else @@ -108,7 +129,7 @@ iRemConBatteryTgt = CRemConBatteryApiTarget::NewL(*iInterfaceSelector, *this); - if (iAccObserver.IsAvrcpVolCTSupported()) + if (iAbsoluteVolController || iLegacyVolController) { iInterfaceSelector->OpenControllerL(); } @@ -445,6 +466,12 @@ // absolute controller or legacy controller. if(!iVolController) { + // iAbsoluteVolController may be NULL, if creation of devsound has + // been failed or local max volume provided by devsound is zero. + + // iLegacyVolController may be NULL, depends on the configuration and + // if creation of devsound has been failed or local max volume provided + // by devsound is zero. if (iAccObserver.IsAbsoluteVolumeSupported(iRemoteAddr)) { iVolController = iAbsoluteVolController; @@ -452,7 +479,7 @@ } else { - iVolController = iLegacyVolController; // iLegacyVolController may be NULL, depends on the configuration. + iVolController = iLegacyVolController; } } }