diff -r fcdfafb36fe7 -r aecbbf00d063 uifw/EikStd/srvuisrc/eikkeysoundserver.cpp --- 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(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; }