diff -r 7c5dd702d6d3 -r f93c875b566e uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp --- a/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp Tue May 11 17:03:00 2010 +0300 +++ b/uiacceltk/hitchcock/coretoolkit/src/HuiCanvasVisual.cpp Tue May 25 13:39:57 2010 +0300 @@ -342,6 +342,11 @@ TBool CHuiCanvasVisual::CanSkipDrawing() const { + if(Display()->RosterImpl().AlfEventWindow() == this) + { + return EFalse; + } + if (Effect()) { TBool semiTranparentEffectActive = Effect()->IsSemitransparent(); @@ -465,7 +470,11 @@ iCanvasVisualData->iPaintedRegion.Clear(); CollectPaintedRegion(iCanvasVisualData->iPaintedRegion, 0); } - + + if(Display()->RosterImpl().AlfEventWindow() == this) + { + refreshCache |= Display()->RosterImpl().NativeAppsContentChanged(); + } didDrawEffect = Effect()->CachedDraw(aGc, area, refreshCache, !transparent, iCanvasVisualData->iPaintedRegion); } @@ -536,10 +545,10 @@ RDebug::Print(_L("CHuiCanvasVisual::DrawSelf - tracked visual")); } #endif - + TBool alfEventWindow = (Display()->RosterImpl().AlfEventWindow() == this); TReal32 effectiveOpacity = EffectiveOpacity(); - if (effectiveOpacity <= 0 || !HasCommandBuffers(ETrue)) + if ((effectiveOpacity <= 0 || !HasCommandBuffers(ETrue)) && !alfEventWindow) { // In case background drawing is enabled, and even if we don't have command buffers we still // want to issue clear. If the background drawing is enabled here, it means that the @@ -572,6 +581,12 @@ } } + if(alfEventWindow) + { + Display()->RosterImpl().DrawNativeAppsContent(aGc, Display()); + return; + } + // Use 'under opaque' hint to optimize drawing. // See comment from CHuiCanvasVisual::Draw for further details. const TBool drawVisualContent = !( Flags() & EHuiVisualFlagUnderOpaqueHint ); @@ -997,6 +1012,7 @@ } background.iPaintedRect = backgroundItems[aIndex].Rect(); + backgroundItems.Close(); return background; } else