diff -r 433cbbb6a04b -r 10534483575f uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h --- a/uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h Fri Mar 12 15:47:04 2010 +0200 +++ b/uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h Mon Mar 15 12:43:37 2010 +0200 @@ -65,12 +65,14 @@ CHuiVisual* aEffectedVisual, CHuiVisual* aTemporaryPresenterVisual, TBool aIsLayout, - TBool aHideWhenFinished) + TBool aHideWhenFinished, + TBool aCanDestroyOrHideImmediately) : iHandle(aHandle), iEffectedVisual(aEffectedVisual), iTemporaryPresenterVisual(aTemporaryPresenterVisual), iIsLayout(aIsLayout), - iHideWhenFinished(aHideWhenFinished) + iHideWhenFinished(aHideWhenFinished), + iCanDestroyOrHideImmediately(aCanDestroyOrHideImmediately) { // RDebug::Printf("TEffectCleanupStruct - 0x%x 0x%x, %d", iEffectedVisual, iTemporaryPresenterVisual, iIsLayout ); }; @@ -80,6 +82,8 @@ TBool iIsLayout; TBool iHideWhenFinished; + + TBool iCanDestroyOrHideImmediately; // not own, unless iEffectedVisual has EShouldDestroy flag enabled CHuiVisual* iEffectedVisual; @@ -129,7 +133,18 @@ TRect& aFullscreen, CAlfScreen* aScreen, TBool& aSubtreeVisible, + TBool& aHasVisualsWithLayers, TBool aChildCanBeOpaque ); + + /** + * Updates layer visibilities. + */ + void HandleLayerVisibility( + CHuiLayout* aLayout, + CHuiControlGroup& aControlGroup, + CHuiControl& aControl, + TBool aVisible ); + /** * This method shows the control group in roster, however the aWhere param * is modified so that controlgroup appears at the right position depending on @@ -227,6 +242,21 @@ void LowMemoryCancelAllEffects(); /** + * Gets size & rotation. + * @param aSize size. + * @param aRotation rotation. + * @return error code. + */ + TInt GetSizeAndRotation(TSize& aSize, TInt& aRotation); + + /** + * Reads pixels to bitmap. + * @param aBitmap bitmap. + * @return error code. + */ + TInt ReadPixels(CFbsBitmap* aBitmap); + + /** * Sets HuiControlGroup as Alf application window group */ void SetWindowGroupAsAlfApp(TInt aId); @@ -245,7 +275,10 @@ * gets another N milliseconds. Most cases, the first N milliseconds is enough. */ void HandleGfxEndFullScreenTimeout(CFullScreenEffectState* aFullScreenEffectData); - + + // Experimental + TBool IsFullScreenDrawn( TInt aOrientation); + private: @@ -285,12 +318,14 @@ // This is needed if we have to abort an effect void HandleGfxStopEffectsL( TAlfBridgerData data ); + void HandleGfxStopControlEffectsL( TAlfBridgerData data ); + /** * RemoveEffectFromApp * * Removes effects on appui. */ - void RemoveEffectFromApp(TInt aAppUid); + void RemoveEffectFromApp(TInt aSecureId, TInt aWgId = -1 ); // component effect handling void HandleGfxControlEffectsL( TAlfBridgerData data ); @@ -341,7 +376,7 @@ * @return ETrue, if layout have been initialized succesfully for the effect EFalse, if any visuals have been removed. Effect should not be applied. */ - TBool SetupEffectLayoutContainerL(TInt aHandle,CHuiLayout* aSourceLayout, TBool aIsExitEffect); + TBool SetupEffectLayoutContainerL(TInt aHandle,CHuiLayout* aSourceLayout, TBool aIsExitEffect, TBool aCanDestroyOrHideImmediately); /* * AddEffectItemL @@ -358,7 +393,8 @@ CHuiControl* aEffectControl, TBool aInsertTemporaryVisual, TBool& aItemDestroyed, - TBool aIsExitEffect = EFalse); + TBool aIsExitEffect = EFalse, + TBool aCanDestroyOrHideImmediately = EFalse); /* @@ -371,20 +407,13 @@ CHuiControl* aEffectControlGroup, TInt& aItemsDestroyed, TBool aAddLayout = ETrue, - TBool aIsExitEffect = EFalse); + TBool aIsExitEffect = EFalse, + TBool aCanDestroyOrHideImmediately = EFalse); /* * ListFamilyTreeL */ void ListFamilyTreeL( RPointerArray& aArray, const CHuiLayout* aLayout ); - /* - * SetupEffectLayoutContainerL - * - * This method creates an own temporary presenter visual visual and binds it to aSourceVisul - * using SetExternalContentL. Finally the effect entry is added to iEffectCleanupStack, - * thus it can be cleaned after effect completion. - */ - void SetupEffectContainerL(TInt aHandle, CHuiCanvasVisual* aSourceVisual, TBool aIsExitEffect); /* * RemoveTemporaryPresenterItem @@ -479,6 +508,12 @@ void HandleSetWindowOpacityL( TAlfBridgerData& aData ); + void HandleSetTransparencyAlphaChannelL( TAlfBridgerData& aData ); + + void HandleIncludeToVisibilityCalculationL( TAlfBridgerData& aData ); + + void HandleSetWindowAreaL( TAlfBridgerData& aData ); + void HandleReorderWindowL( TAlfBridgerData& aData ); void HandlePostCanvasBufferL( TAlfBridgerData& aData ); @@ -605,7 +640,30 @@ TInt& aScreenNumber, TAlfControlGroupEntry** aAlfGroup = NULL ); - CHuiControlGroup* FindControlGroupByAppId( TInt aAppId ); + /** + * Finds control group which matches the given secure ID. For more detailed search, + * you can provide the client window group ID. + * + * @param aSecureId Secure ID to seacrh for + * @param aWgId Client window group ID. Ignored if -1. + * @return Pointer to found control gruop. NULL if not found. + */ + CHuiControlGroup* FindControlGroupBySecureId( TInt aSecureId, TInt aWgId = -1 ) const; + + /** + * Finds control gruop which matches the full screen effect end state. + * + * @return Pointer to found control gruop. NULL if not found. + */ + CHuiControlGroup* FindControlGroupByFullScreenToEffect() const; + + /** + * Finds control gruop which matches the full screen effect start state. + * + * @return Pointer to found control gruop. NULL if not found. + */ + CHuiControlGroup* FindControlGroupByFullScreenFromEffect() const; + /** * This method deletes controlgroup which has been assosiated with given window group id. * Control group may or may not be active in roster. @@ -703,6 +761,19 @@ RPointerArray iAlfScreens; void SetCursorTimerL(TUint aTime = 0, CHuiVisual* aCursor = 0); TBool IsAlfOriginatedWindow(CHuiCanvasVisual& aVisual); + + // Experimental + TBool IsFullScreenDrawnRecursive( + CHuiLayout* aLayout, + CHuiControlGroup& aControlGroup, + CHuiControl& aControl, + TBool& aFullscreenCovered, + TRect& aFullscreen, + CAlfScreen* aScreen, + TBool& aSubtreeVisible, + TBool& aHasVisualsWithLayers, + TBool aChildCanBeOpaque, + TInt aOrientation); NONSHARABLE_CLASS ( TDeadControlGroup ) { @@ -846,6 +917,10 @@ RArray iAlfRegisteredEffects; CHuiEnv* iHuiEnv; CAlfAppUi* iAppUi; + CAlfLayoutSwitchEffectCoordinator* LayoutSwitchEffectCoordinator() + { + return iLayoutSwitchEffectCoordinator; + } private: @@ -879,10 +954,6 @@ TBool iLowMemoryMode; THuiMemoryLevel iCurrentMemoryLevel; - #ifdef USE_MODULE_TEST_HOOKS_FOR_ALF - TInt iTempTotalActiveVisualCount; - TInt iTempTotalPassiveVisualCount; - #endif #ifdef ALF_DEBUG_PRINT_WINDOWGROUP_ORDER TInt activevisualcount; TInt passivevisualcount;