diff -r a8834a2e9a96 -r c52421ed5f07 uifw/AvKon/src/AknIndicatorContainer.cpp --- a/uifw/AvKon/src/AknIndicatorContainer.cpp Wed Jun 09 09:58:37 2010 +0300 +++ b/uifw/AvKon/src/AknIndicatorContainer.cpp Mon Jun 21 15:57:43 2010 +0300 @@ -307,9 +307,6 @@ iIndicators = new (ELeave) CAknIndicatorQueue( KAknIndicatorQueueGranularity ); } - - - iTicker = CPeriodic::NewL( CActive::EPriorityLow ); } @@ -4288,24 +4285,37 @@ if ( !iExtension->iIsForeground || R_AVKON_STATUS_PANE_LAYOUT_EMPTY == curId ) { - if ( iTicker->IsActive() ) + if ( iTicker ) { iTicker->Cancel(); + delete iTicker; + iTicker = NULL; } + return; } - if ( !iTicker->IsActive() && iAnimatedIndicatorsShown > 0 ) + if ( iAnimatedIndicatorsShown > 0 ) { - iTicker->Start( KAknIndicatorAnimationShortDelay, - KAknIndicatorAnimationInterval, - TCallBack( TickerCallback, this ) ); + if ( !iTicker ) + { + TRAP_IGNORE( iTicker = CPeriodic::NewL( CActive::EPriorityLow ) ); + } + + if ( iTicker && !iTicker->IsActive() ) + { + iTicker->Start( KAknIndicatorAnimationShortDelay, + KAknIndicatorAnimationInterval, + TCallBack( TickerCallback, this ) ); + } } - else if ( iTicker->IsActive() && iAnimatedIndicatorsShown == 0 ) + else if ( iTicker && iAnimatedIndicatorsShown == 0 ) { // Cancel animation timer if animated indicators // are not visible anymore. iTicker->Cancel(); + delete iTicker; + iTicker = NULL; iSynchronizingValue = 0; } }