diff -r 15bf7259bb7c -r d8a3531bc6b8 uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp --- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp Tue Feb 02 07:56:43 2010 +0200 +++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxEngine.cpp Mon Feb 22 17:57:49 2010 +0200 @@ -77,6 +77,26 @@ return EFalse; #endif } + +TBool CHuiFxEngine::FxmlUsesInput1(CHuiFxEffect& aEffect) + { + RArray array; + aEffect.FxmlVisualInputs(array); + + TInt c = array.Count(); + for(TInt i = 0; iSetEffectEndObserver( aEffectEndObserver, aHandle ); - aFlags |= KHuiFxDelayRunUntilFirstFrameHasBeenDrawn; node->SetEffectFlags( aFlags ); CleanupStack::PushL(node); iCache->FindOrCreateL(node); // takes ownership @@ -206,7 +225,6 @@ aFlags |= KHuiFxWaitGroupSyncronization; node->SetEffectGroup(aGroup); } - aFlags |= KHuiFxDelayRunUntilFirstFrameHasBeenDrawn; node->SetEffectFlags( aFlags ); CleanupStack::PushL(node); @@ -314,6 +332,14 @@ #endif // #ifdef HUIFX_TRACE iActiveEffects.AppendL(aEffect); + + // Performance improvement, but this would be better to be a special hint param in the fxml + if (aEffect && FxmlUsesInput1(*aEffect)) + { + TInt flags = aEffect->EffectFlags(); + flags |= KHuiFxOpaqueHint; + aEffect->SetEffectFlags(flags); + } } EXPORT_C void CHuiFxEngine::RemoveEffect(CHuiFxEffect* aEffect)