diff -r cd0ae4656946 -r c9d868f1e20c uiacceltk/hitchcock/coretoolkit/src/HuiRosterImpl.cpp --- a/uiacceltk/hitchcock/coretoolkit/src/HuiRosterImpl.cpp Mon Jun 21 16:41:52 2010 +0300 +++ b/uiacceltk/hitchcock/coretoolkit/src/HuiRosterImpl.cpp Thu Jul 15 19:40:07 2010 +0300 @@ -500,13 +500,20 @@ // some other part of the effect, so this workaround won't work correctly in those cases. // To get those working, propably whole opacity effect handling should be re-written // differently. - if (iEffect->IsSemitransparent() || iEffectOpacity < 1.f) + CHuiRosterImpl* nonconst = const_cast(this); + nonconst->Effectable()->EffectSetOpacityAdditive(0.0f, ETrue); + // PrepareDraw will update iEffectOpacity to correct opacity for this effect frame + if(iEffect->PrepareDrawL(aGc, displayRect)) { - iEffect->ForceCachedRenderTargetUsage(ETrue); - } - RRegion dummy; - didDrawEffect = iEffect->CachedDraw(aGc, displayRect, refreshCache, opaque, dummy, EFalse, iEffectOpacity*255); - dummy.Close(); + if (iEffectOpacity < 1.f) + { + iEffect->ForceCachedRenderTargetUsage(ETrue); + } + + RRegion dummy; + didDrawEffect = iEffect->CachedDraw(aGc, displayRect, refreshCache, opaque, dummy, EFalse, iEffectOpacity*255); + dummy.Close(); + } } if (!didDrawEffect) @@ -1831,12 +1838,12 @@ SetChanged(); } -TReal32 CHuiRosterImpl::EffectOpacityTarget() const +TReal32 CHuiRosterImpl::EffectOpacity() const { return iEffectOpacity; } -void CHuiRosterImpl::EffectSetOpacity(TReal32 aOpacity) +void CHuiRosterImpl::EffectSetOpacityAdditive(TReal32 aOpacity, TBool /*aReplace*/) { iEffectOpacity = aOpacity; } @@ -1877,6 +1884,11 @@ return iIsInput1; } +TBool CHuiRosterImpl::EffectReadyToDrawNextFrame() const + { + return ETrue; + } + void CHuiRosterImpl::SetMemoryLevel(THuiMemoryLevel /*aLevel*/) { if ( IsVisibleContentFrozen() && !UseRenderBufferForFreeze() )