--- 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)