equal
deleted
inserted
replaced
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; |