# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1279212519 -10800 # Node ID e53284de66c2c8a71f6714e1d016e024c50f36f5 # Parent 64f6657d3cc15ec54e47fc1d71049224a2fd5014 Revision: 201025 Kit: 2010127 diff -r 64f6657d3cc1 -r e53284de66c2 videoscheduler/SchedulerServer/src/CCseSchedulerServer.cpp --- a/videoscheduler/SchedulerServer/src/CCseSchedulerServer.cpp Mon Jun 21 16:49:37 2010 +0300 +++ b/videoscheduler/SchedulerServer/src/CCseSchedulerServer.cpp Thu Jul 15 19:48:39 2010 +0300 @@ -168,13 +168,14 @@ CTrapCleanup* cleanupStack = CTrapCleanup::New(); if ( !cleanupStack ) { - PanicServer( ECseCreateTrapCleanup ); + CSELOGSTRING_HIGH_LEVEL("CCseSchedulerServer::ThreadFunction - Could not create cleanupstack: %d"); + return KErrNone; } TRAPD( err, ThreadFunctionL( ) ); if ( err ) { - PanicServer( ECseSrvCreateServer ); + CSELOGSTRING2_HIGH_LEVEL("CCseSchedulerServer::ThreadFunction - Main thread leaved: %d", err ); } delete cleanupStack; @@ -300,17 +301,21 @@ void CCseSchedulerServer::DeleteSchedulerEngine() { CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServer::DeleteSchedulerEngine"); - + if ( iContainerIx ) { - iSchedulerEngine->Close(); + if( iObjectCon->Count() > 0 ) + { + iSchedulerEngine->Close(); + } + iContainerIx->Remove( iObjectCon ); delete iContainerIx; iContainerIx = NULL; iSchedulerEngine = NULL; } - - if( iStarterBreaker->IsActive() ) + + if( iStarterBreaker && iStarterBreaker->IsActive() ) { iStarterBreaker->Cancel(); } diff -r 64f6657d3cc1 -r e53284de66c2 videoscheduler/SchedulerServer/src/CCseSchedulerServerEngine.cpp --- a/videoscheduler/SchedulerServer/src/CCseSchedulerServerEngine.cpp Mon Jun 21 16:49:37 2010 +0300 +++ b/videoscheduler/SchedulerServer/src/CCseSchedulerServerEngine.cpp Thu Jul 15 19:48:39 2010 +0300 @@ -56,6 +56,16 @@ // None. // ============================ MEMBER FUNCTIONS =============================== +// ----------------------------------------------------------------------------- +// CloseEngine +// CB method used if ConstructL leaves. Just calls Close to initiate proper +// shutdown sequence +// ----------------------------------------------------------------------------- +// +void CloseEngine( TAny* aPtr ) + { + static_cast( aPtr )->Close(); + } // ----------------------------------------------------------------------------- // CCseSchedulerServerEngine::CCseSchedulerServerEngine @@ -79,10 +89,10 @@ { CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::NewL"); - CCseSchedulerServerEngine* self = new( ELeave ) CCseSchedulerServerEngine( aServer ); - CleanupStack::PushL( self ); + CCseSchedulerServerEngine* self = new( ELeave ) CCseSchedulerServerEngine( aServer ); + CleanupStack::PushL( TCleanupItem( CloseEngine, self ) ); self->ConstructL(); - CleanupStack::Pop( self ); + CleanupStack::Pop( ); // CleanupItem CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::ConstructL"); - + CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::ConstructL"); + iDb = CCseScheduleDB::NewL(); iCompletitionBreaker = CIdle::NewL( CActive::EPriorityLow ); - + CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::~CCseSchedulerServerEngine"); - + delete iDb; iPluginControllerArray.ResetAndDestroy(); iPluginControllerArray.Close(); - delete iCompletitionBreaker; - + delete iCompletitionBreaker; + CSELOGSTRING_HIGH_LEVEL("<<>>CCseSchedulerServerEngine::IsSchedulerActive"); + CSELOGSTRING_HIGH_LEVEL(">>>CCseSchedulerServerEngine::Close"); while( AccessCount() >= 1 ) { Dec(); } - CSELOGSTRING_HIGH_LEVEL("<< - - - install - - - - - \ No newline at end of file