uiacceltk/hitchcock/coretoolkit/src/HuiEnv.cpp
branchRCL_3
changeset 7 88b23e2e82e1
parent 6 10534483575f
child 15 cd0ae4656946
equal deleted inserted replaced
6:10534483575f 7:88b23e2e82e1
   344     }
   344     }
   345 
   345 
   346 
   346 
   347 CHuiEnv::~CHuiEnv()
   347 CHuiEnv::~CHuiEnv()
   348     {
   348     {
       
   349     iSynchObservers.Close();
       
   350     iSynchIds.Close();
       
   351     
   349     iActionObservers.Close();
   352     iActionObservers.Close();
   350 
   353 
   351     // Destroy groups in reverse order so that references will be removed
   354     // Destroy groups in reverse order so that references will be removed
   352     // in natural order.
   355     // in natural order.
   353     TInt i = 0;
   356     TInt i = 0;
  1770     return iMemoryLevel;
  1773     return iMemoryLevel;
  1771     }
  1774     }
  1772 
  1775 
  1773 EXPORT_C void CHuiEnv::Synchronize(TInt aId, MHuiSynchronizationObserver* aObserver)
  1776 EXPORT_C void CHuiEnv::Synchronize(TInt aId, MHuiSynchronizationObserver* aObserver)
  1774     {
  1777     {
  1775     iSynchObserver = aObserver;
  1778     TInt err = iSynchObservers.Append(aObserver);
  1776     iSynchId = aId;
  1779     if(err)
  1777     
  1780         {
       
  1781         return;
       
  1782         }
       
  1783     err = iSynchIds.Append(aId);
       
  1784     if(err )
       
  1785         {
       
  1786         iSynchObservers.Remove(iSynchObservers.Count()-1);
       
  1787         return;
       
  1788         }
  1778     if ( aObserver )
  1789     if ( aObserver )
  1779         {
  1790         {
  1780         ContinueRefresh();
  1791         ContinueRefresh();
  1781         }
  1792         }
  1782     }
  1793     }
  1783 
  1794 
  1784 void CHuiEnv::DoSynchronize()
  1795 void CHuiEnv::DoSynchronize()
  1785     {
  1796     {
  1786     if ( !iSynchObserver )
  1797     if ( iSynchObservers.Count() == 0)
  1787         {
  1798         {
  1788         return;
  1799         return;
  1789         }
  1800         }
  1790 
  1801 
  1791     // Synchronize commands before signalling through P&S
  1802     // Synchronize commands before signalling through P&S
  1797             MakeCurrent(*iDisplays[i]);
  1808             MakeCurrent(*iDisplays[i]);
  1798             iDisplays[i]->RenderSurface().Finish();
  1809             iDisplays[i]->RenderSurface().Finish();
  1799             }
  1810             }
  1800         }
  1811         }
  1801 
  1812 
  1802     iSynchObserver->Synchronized( iSynchId );
  1813     TUint observersCount = iSynchObservers.Count()-1;
  1803     iSynchObserver = NULL;
  1814     for(TInt u = observersCount; u >= 0 ; u-- )
       
  1815         {
       
  1816         iSynchObservers[u]->Synchronized( iSynchIds[u] );
       
  1817         iSynchObservers.Remove(u);
       
  1818         iSynchIds.Remove(u);
       
  1819         }
  1804     }
  1820     }
  1805 
  1821 
  1806 void CHuiEnv::RemoveTheControlGroup(TInt aId)
  1822 void CHuiEnv::RemoveTheControlGroup(TInt aId)
  1807     {
  1823     {
  1808     TInt i;
  1824     TInt i;