diff -r 46927d61fef3 -r 3ac8bf5c5014 uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp --- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp Wed Apr 14 16:53:50 2010 +0300 +++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp Tue Apr 27 17:34:42 2010 +0300 @@ -77,6 +77,15 @@ return EFalse; #endif } +EXPORT_C TBool CHuiFxEngine::FxmlUsesOpaqueHint(const TDesC &aFileName) + { +#ifdef HUIFX_EFFECTCACHE_ENABLED + return iCache->FxmlUsesOpaqueHint(aFileName); +#endif +#ifndef HUIFX_EFFECTCACHE_ENABLED + return EFalse; +#endif + } TBool CHuiFxEngine::FxmlUsesInput1(CHuiFxEffect& aEffect) { @@ -287,7 +296,13 @@ #ifdef HUIFX_TRACE RDebug::Printf("void CHuiFxEngine::NotifyEffectEndObservers() calling NotifyEffectEndObserver"); #endif - effect->NotifyEffectEndObserver(); + if (!effect->NotifyEffectEndObserver()) + { + // this effect is not in effect cleanupstack and does not have end observer on coretoolkit + // side. However, it might have observer on alf side, that is notified from RemoveEffect. + // Alf clients are responsible for destroying their own effects + RemoveEffect(effect); + } } } } @@ -366,6 +381,8 @@ TInt i = iActiveEffects.Find(aEffect); if (i >= 0) { + // Note, will effecsts will be drawn until they are destroyed. Removing + // from iActiveEffects list only stops timeline updates. iActiveEffects.Remove(i); if (iEffectObserver) {