uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp
branchRCL_3
changeset 10 88b23e2e82e1
parent 8 10534483575f
child 41 cd0ae4656946
--- a/uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp	Mon Mar 15 12:43:37 2010 +0200
+++ b/uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp	Wed Mar 31 23:03:58 2010 +0300
@@ -346,6 +346,9 @@
 
 CHuiEnv::~CHuiEnv()
     {
+    iSynchObservers.Close();
+    iSynchIds.Close();
+    
     iActionObservers.Close();
 
     // Destroy groups in reverse order so that references will be removed
@@ -1772,9 +1775,17 @@
 
 EXPORT_C void CHuiEnv::Synchronize(TInt aId, MHuiSynchronizationObserver* aObserver)
     {
-    iSynchObserver = aObserver;
-    iSynchId = aId;
-    
+    TInt err = iSynchObservers.Append(aObserver);
+    if(err)
+        {
+        return;
+        }
+    err = iSynchIds.Append(aId);
+    if(err )
+        {
+        iSynchObservers.Remove(iSynchObservers.Count()-1);
+        return;
+        }
     if ( aObserver )
         {
         ContinueRefresh();
@@ -1783,7 +1794,7 @@
 
 void CHuiEnv::DoSynchronize()
     {
-    if ( !iSynchObserver )
+    if ( iSynchObservers.Count() == 0)
         {
         return;
         }
@@ -1799,8 +1810,13 @@
             }
         }
 
-    iSynchObserver->Synchronized( iSynchId );
-    iSynchObserver = NULL;
+    TUint observersCount = iSynchObservers.Count()-1;
+    for(TInt u = observersCount; u >= 0 ; u-- )
+        {
+        iSynchObservers[u]->Synchronized( iSynchIds[u] );
+        iSynchObservers.Remove(u);
+        iSynchIds.Remove(u);
+        }
     }
 
 void CHuiEnv::RemoveTheControlGroup(TInt aId)