diff -r 2f88a7d66f50 -r 53b7818cd282 bluetoothengine/btsac/btrcc/src/btrccLinker.cpp --- a/bluetoothengine/btsac/btrcc/src/btrccLinker.cpp Tue May 11 16:23:08 2010 +0300 +++ b/bluetoothengine/btsac/btrcc/src/btrccLinker.cpp Tue May 25 12:53:11 2010 +0300 @@ -25,6 +25,7 @@ #include #include #include "btaudioremconpskeys.h" +#include "btrccLegacyVolumeLevelController.h" #include "btrccAbsoluteVolumeLevelController.h" #include "btrccLinker.h" #include "btrccplayerstarter.h" @@ -86,6 +87,14 @@ if (iAccObserver.IsAvrcpVolCTSupported()) { iAbsoluteVolController = CBTRCCAbsoluteVolumeLevelController::NewL(*iInterfaceSelector, *this); + 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."))) + } } else { @@ -125,6 +134,7 @@ User::RequestComplete(iClientRequest, KErrAbort); delete iAbsoluteVolController; + delete iLegacyVolController; delete iPlayerStarter; Cancel(); iStateArray.ResetAndDestroy(); @@ -432,7 +442,7 @@ if (iAccObserver.IsAvrcpVolCTSupported()) { // Choose based on SDP result whether to create - // absolute controller or not. + // absolute controller or legacy controller. if(!iVolController) { if (iAccObserver.IsAbsoluteVolumeSupported(iRemoteAddr)) @@ -440,10 +450,10 @@ iVolController = iAbsoluteVolController; TRACE_INFO(_L("Absolute volume supported, taking it into use.")) } - else - { - TRACE_INFO(_L("No absolute volume supported, so no volume control.")) - } + else + { + iVolController = iLegacyVolController; // iLegacyVolController may be NULL, depends on the configuration. + } } } if (iVolController)