uifw/EikStd/srvuisrc/eikkeysoundserver.cpp
branchRCL_3
changeset 55 aecbbf00d063
parent 50 a1caeb42b3a3
child 56 d48ab3b357f1
--- a/uifw/EikStd/srvuisrc/eikkeysoundserver.cpp	Thu Aug 19 10:11:06 2010 +0300
+++ b/uifw/EikStd/srvuisrc/eikkeysoundserver.cpp	Tue Aug 31 15:28:30 2010 +0300
@@ -36,7 +36,7 @@
 _LIT(KKeySoundServerSemaphoreName,"KeySoundServerSemaphore");
 _LIT(KKeySoundServerDll,"AtSoundServerClient.dll");
 
-const TInt KKeySoundServerStackSize     = 1024*8; // 8K
+const TInt KKeySoundServerStackSize     = 1024*4; // 4K
 const TInt KAknSoundInfoMapGranularity  = 16;
 const TInt KKeyClickPreference          = 0x00140001;
 const TInt KKeySoundServerBufExpandSize = 1024*1; // 1K
@@ -282,7 +282,7 @@
 void CEikKeySoundServer::Complete(TInt aError, TAudioThemeEvent aEvent)
 	{
 	if( aError != KErrNone && aError != ESilencedError 
-	    && aError != EEventCurrentlyPlaying && aError != KErrUnderflow)
+	    && aError != EEventCurrentlyPlaying )
 		{
 		PlaySid(aEvent, ETrue);
 		}
@@ -314,11 +314,6 @@
         aPlaySelf = ETrue;
         }
 
-	if(!iATSoundServerAPI)
-        {
-    	aPlaySelf = ETrue;
-    	}
-
     if(!aPlaySelf && iATSoundServerAPI)
         {
         TAudioThemeEvent event = static_cast<TAudioThemeEvent>(aSid);
@@ -430,10 +425,7 @@
     RemoveSids(iClientUid);
     if (iHasLockedContext)
         {
-        if( iServer )
-            {
-            iServer->SetContextLocked(EFalse);
-            }
+        iServer->SetContextLocked(EFalse);
         }
     if (iOwnsDefaultSounds)
         {
@@ -1128,16 +1120,56 @@
 CAknFileSoundInfo::~CAknFileSoundInfo()
     {
     delete iAudioPlayer;
+    delete iAudioData;
     }
 
 void CAknFileSoundInfo::InitL(const TDesC& aFileName, CMdaServer* aMdaServer)
     {
     LOGTEXT(_L("CAknFileSoundInfo::InitL() - Filename:"));
     LOGTEXT(aFileName);
-    iFileName = aFileName;
+
+    iMdaServer = aMdaServer;
+
+    delete iAudioData;
+    iAudioData = NULL;
+
+    RFs fsSession;
+    User::LeaveIfError( fsSession.Connect() );
+    CleanupClosePushL(fsSession);
+
+    TEntry entry;
+    User::LeaveIfError(fsSession.Entry(aFileName, entry));
+    TInt fileSize = entry.iSize;
+
+    LOGTEXT1(_L(" CAknFileSoundInfo::InitL() - File size:%d"), fileSize);
+
+    iAudioData = HBufC8::NewMaxL(fileSize);
+
+    TPtr8 dataPtr = iAudioData->Des();
+    LoadAudioDataL(fsSession, aFileName, dataPtr);
+
+    CleanupStack::PopAndDestroy();   // fsSession
+
     LOGTEXT(_L(" CAknFileSoundInfo::InitL() - Exit"));
     }
 
+
+void CAknFileSoundInfo::LoadAudioDataL(RFs& aFs, const TDesC& aFileName, TDes8& aDes)
+    {
+    RDebug::Print(_L("CAknFileSoundInfo::LoadAudioDataL()."));
+
+    RFile file;
+    User::LeaveIfError( file.Open(aFs, aFileName,EFileRead|EFileShareAny) );
+    CleanupClosePushL(file);
+    TInt error = file.Read(aDes, aDes.Length());
+    file.Close();
+    CleanupStack::Pop();    //file
+    User::LeaveIfError(error);
+
+    LOGTEXT(_L(" CAknFileSoundInfo::LoadAudioDataL() - Exit"));
+    }
+
+
 void CAknFileSoundInfo::PlayL()
     {
     LOGTEXT(_L("CAknFileSoundInfo::PlayL()."));
@@ -1147,7 +1179,9 @@
     Stop();
 
     // Create audio player. DoPlay() will be called in all circumstances.
-    iAudioPlayer = CMdaAudioPlayerUtility::NewFilePlayerL(iFileName, *this, iPriority,(TMdaPriorityPreference)iPreference );
+    iAudioPlayer = CMdaAudioPlayerUtility::NewDesPlayerReadOnlyL(
+        *iAudioData, *this, iPriority, (TMdaPriorityPreference)iPreference, iMdaServer);
+
     LOGTEXT(_L(" CAknFileSoundInfo::PlayL() - Exit"));
     }
 
@@ -1229,8 +1263,7 @@
 
     if ( Preference() != KKeyClickPreference ) // Other sounds than key click
         {
-		//change (TInt)ESoundVolume9 to ((TInt)ESoundVolume9 + 1)) to keep consistent with audiotheme
-        aAudioPlayer->SetVolume( ((TInt)iVolume * max )/((TInt)ESoundVolume9 + 1));
+        aAudioPlayer->SetVolume( ((TInt)iVolume * max )/(TInt)ESoundVolume9);
         return;
         }