--- a/mmserv/tms/tmsserver/src/tmsserver.cpp Wed Apr 14 16:29:54 2010 +0300
+++ b/mmserv/tms/tmsserver/src/tmsserver.cpp Tue Apr 27 17:11:02 2010 +0300
@@ -79,7 +79,7 @@
iUplCodecs.Reset();
iUplCodecs.Close();
delete iEffectSettings;
- CancelRoutingNotifier();
+ delete iTarHandler;
CancelCenRepHandler();
TRACE_PRN_FN_EXT;
@@ -129,7 +129,10 @@
iEffectSettings = TMSGlobalEffectsSettings::NewL();
iTarHandler = NULL;
iAudioCenRepHandler = NULL;
- iCurrentRouting = TMS_AUDIO_OUTPUT_NONE;
+ iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
+
+ // We need it running for global volume change updates
+ StartRoutingNotifierL();
TRACE_PRN_FN_EXT;
}
@@ -333,7 +336,7 @@
//
void TMSServer::CancelRoutingNotifier()
{
- if (--iTarHandlerCount <= 0)
+ if (--iTarHandlerCount < 1)
{
delete iTarHandler;
iTarHandler = NULL;
@@ -628,7 +631,8 @@
while (serverSession != NULL)
{
serverSession->HandleGlobalEffectChange(
- TMS_EVENT_EFFECT_VOL_CHANGED);
+ TMS_EVENT_EFFECT_VOL_CHANGED, level, EFalse,
+ iCurrentRouting);
serverSession = static_cast<TMSServerSession*> (iSessionIter++);
}
@@ -703,7 +707,7 @@
while (serverSession != NULL)
{
serverSession->HandleGlobalEffectChange(
- TMS_EVENT_EFFECT_GAIN_CHANGED);
+ TMS_EVENT_EFFECT_GAIN_CHANGED, level);
serverSession = static_cast<TMSServerSession*> (iSessionIter++);
}
}
@@ -822,19 +826,37 @@
{
TRACE_PRN_FN_ENT;
+ TInt vol;
iCurrentRouting = routingpckg().iOutput;
+ if (iCurrentRouting == TMS_AUDIO_OUTPUT_PUBLIC ||
+ iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER)
+ {
+ iEffectSettings->GetLoudSpkrVolume(vol);
+ }
+ else
+ {
+ iEffectSettings->GetEarPieceVolume(vol);
+ }
+
+ TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
+
iSessionIter.SetToFirst();
TMSServerSession* serverSession =
static_cast<TMSServerSession*> (iSessionIter++);
-
while (serverSession != NULL)
{
- serverSession->HandleRoutingChange(routingpckg);
+ // Send only if there is a subscriber to TMS routing notifications.
+ if (iTarHandlerCount > 1)
+ {
+ serverSession->HandleRoutingChange(routingpckg);
+ }
+ serverSession->HandleGlobalEffectChange(TMS_EVENT_EFFECT_VOL_CHANGED,
+ vol, ETrue, iCurrentRouting);
serverSession = static_cast<TMSServerSession*> (iSessionIter++);
}
TRACE_PRN_FN_EXT;
- return TMS_RESULT_SUCCESS;
+ return status;
}
// -----------------------------------------------------------------------------