--- 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<THuiFxVisualSrcType> array;
+ aEffect.FxmlVisualInputs(array);
+
+ TInt c = array.Count();
+ for(TInt i = 0; i<c; i++)
+ {
+ THuiFxVisualSrcType val = array[i];
+ if (val == EVisualSrcInput1)
+ {
+ array.Close();
+ return ETrue;
+ }
+ }
+ array.Close();
+ return EFalse;
+ }
+
EXPORT_C void CHuiFxEngine::RegisterEffectL(const TDesC &aFileName)
{
@@ -150,7 +170,6 @@
#ifdef HUIFX_EFFECTCACHE_ENABLED
CHuiFxEffectCacheEffectNode *node = new (ELeave) CHuiFxEffectCacheEffectNode(aFileName, aEffect, aVisual, &iExtRect, this);
node->SetEffectEndObserver( 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)