diff -r b220a9341636 -r fe9d1bf55678 devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.cpp --- a/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.cpp Tue Nov 02 12:13:59 2010 +0000 +++ b/devsound/a3fdevsound/src/mmfaudioserver/mmfaudioserver.cpp Tue Nov 02 12:28:51 2010 +0000 @@ -32,8 +32,12 @@ #ifdef _DEBUG #include "e32debug.h" #define SYMBIAN_DEBPRN0(str) RDebug::Print(str, this) +#define SYMBIAN_DEBPRN1(str, val1) RDebug::Print(str, this, val1) +#define SYMBIAN_DEBPRN2(str, val1, val2) RDebug::Print(str, this, val1, val2) #else #define SYMBIAN_DEBPRN0(str) +#define SYMBIAN_DEBPRN1(str, val1) +#define SYMBIAN_DEBPRN2(str, val1, val2) #endif //_DEBUG @@ -50,19 +54,22 @@ // ============================ MEMBER FUNCTIONS =============================== + // ----------------------------------------------------------------------------- // CMMFAudioServer::NewL // Two-phased constructor. +// @param aStayOpen whether or not the server should stay open permanently // ----------------------------------------------------------------------------- // -CMMFAudioServer* CMMFAudioServer::NewL() - { - CMMFAudioServer* self = new(ELeave) CMMFAudioServer(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } +CMMFAudioServer* CMMFAudioServer::NewL(TBool aStayOpen) + { + + CMMFAudioServer* self = new(ELeave) CMMFAudioServer(aStayOpen); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } // ----------------------------------------------------------------------------- // CMMFAudioServer::CMMFAudioServer @@ -70,8 +77,9 @@ // might leave. // ----------------------------------------------------------------------------- // -CMMFAudioServer::CMMFAudioServer() - : CMmfIpcServer(EPriorityStandard) +CMMFAudioServer::CMMFAudioServer(TBool aStayOpen) + : CMmfIpcServer(EPriorityStandard), iStayOpen (aStayOpen) + { } @@ -81,19 +89,22 @@ // ----------------------------------------------------------------------------- // void CMMFAudioServer::ConstructL() - { + { SYMBIAN_DEBPRN0(_L("CMMFAudioServer[0x%x]::ConstructL - enter")); - + SetPinClientDescriptors(ETrue); // Call base class to Start server StartL(KAudioServerName); iFourCCConvertor = CFourCCConvertor::NewL(); - iDelayAudioServerShutDown = CDelayAudioServerShutDown::NewL(); + + if(!iStayOpen) + { + iDelayAudioServerShutDown = CDelayAudioServerShutDown::NewL(); + } iFactory = CMMFAudioServerFactory::NewL(); iFactory->StartL(*this); - SYMBIAN_DEBPRN0(_L("CMMFAudioServer[0x%x]::ConstructL - exit")); } @@ -191,16 +202,19 @@ // void CMMFAudioServer::IncrementDevSoundCount() { - iDevSoundCount++; - //in the case we started the shutdown due to no more DevSound - if(iDevSoundCount) - { - ASSERT(iDelayAudioServerShutDown); - if (iDelayAudioServerShutDown) - { - iDelayAudioServerShutDown->Cancel(); - } - } + if(!iStayOpen) + { + iDevSoundCount++; + //in the case we started the shutdown due to no more DevSound + if(iDevSoundCount) + { + ASSERT(iDelayAudioServerShutDown); + if (iDelayAudioServerShutDown) + { + iDelayAudioServerShutDown->Cancel(); + } + } + } } // ----------------------------------------------------------------------------- @@ -211,15 +225,22 @@ // void CMMFAudioServer::DecrementDevSoundCount() { - iDevSoundCount--; - if (iDevSoundCount == 0) - { - ASSERT(iDelayAudioServerShutDown); - if (iDelayAudioServerShutDown) - { - iDelayAudioServerShutDown->SetDelay(TTimeIntervalMicroSeconds32(KAudioServerShutDownDelay)); - } - } + + if(!iStayOpen) + { + iDevSoundCount--; + //dont shut down if iStayOpen is set + if (iDevSoundCount == 0) + { + + ASSERT(iDelayAudioServerShutDown); + if (iDelayAudioServerShutDown) + { + SYMBIAN_DEBPRN0(_L("CMMFAudioServer[0x%x]::DecrementDevSoundCount - shutting down server")); + iDelayAudioServerShutDown->SetDelay(TTimeIntervalMicroSeconds32(KAudioServerShutDownDelay)); + } + } + } } // -----------------------------------------------------------------------------