uifw/AvKon/src/AknIndicatorContainer.cpp
branchRCL_3
changeset 38 c52421ed5f07
parent 25 941195f2d488
child 55 aecbbf00d063
--- 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;
         }
     }