diff -r e5af45d51884 -r 31fccae4f8a7 uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h --- a/uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h Tue Aug 31 16:07:35 2010 +0300 +++ b/uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h Wed Sep 01 12:16:53 2010 +0100 @@ -159,7 +159,7 @@ CHuiRoster& aRoster, CHuiControlGroup& aGroup, TInt aWhere, - TInt aScreenNumber ); + TInt aScreenNumber = 0); /** * This method sets the windowgroup id for the alf window. @@ -202,8 +202,8 @@ */ void AlfGfxEffectEndCallBack( TInt aHandle ); - TInt FindClientWindowGroupId( TInt aScreenNumber, CHuiControlGroup& aControlGroup ); - TInt FindWindowGroupNodeId( TInt aScreenNumber, CHuiControlGroup& aControlGroup ) const; + TInt FindClientWindowGroupId(CHuiControlGroup& aControlGroup ); + TInt FindWindowGroupNodeId(CHuiControlGroup& aControlGroup ) const; void CleanAllFxVisuals(); @@ -318,6 +318,25 @@ TInt aDuration, TBool& aCoverageRegionModified ); + // Experimental + + /** + * Checks if visual that's flagged as not ready for current orientation is reachable. + */ + TBool IsVisualNotReadyReachable(); + + /** + * Recursive helper function for IsVisualNotReadyReachable. + */ + TBool IsVisualNotReadyReachableRecursive( + CHuiLayout* aLayout, + CHuiControlGroup& aControlGroup, + CHuiControl& aControl, + TBool& aFullscreenCovered, + const TRect& aFullscreen, + CAlfScreen* aScreen, + TBool aChildCanBeOpaque, + TBool aOnlyForEmbeddedAlfApp); void LayoutSwitchStart(); void LayoutSwitchComplete(); @@ -407,6 +426,16 @@ TBool StoreLayoutIfRequiredByEffectL(CHuiLayout* aLayout, CFullScreenEffectState& aEvent, TBool& aNeededStoredLayout); /** + * HandleGfxRedirection + * + * Redirect effect to correct application in case of effect requested for host application, but + * embedded (chained) application is on top of it. + * + * If effect setup has been already made for the layout, effect is not redirected. + */ + void HandleGfxRedirection(CFullScreenEffectState& aEvent, CHuiLayout*& aLayout); + + /** * Handles begin and end fullscreen events */ TBool HandleGfxEventL(CFullScreenEffectState& aEvent, CHuiLayout* aToLayout, CHuiLayout *aFromLayout); @@ -591,6 +620,8 @@ void HandleIncludeToVisibilityCalculationL( TAlfBridgerData& aData ); + void HandleSetScreenDeviceValidL( TAlfBridgerData& aData ); + void HandleSetWindowAreaL( TAlfBridgerData& aData ); void HandleReorderWindowL( TAlfBridgerData& aData ); @@ -617,6 +648,10 @@ void HandleSetFadeEffectL( TAlfBridgerData& aData ); + void HandleGroupChained( TAlfBridgerData& aData); + + void HandleGroupChainBroken( TAlfBridgerData& aData); + void HandleMoveWindowToNewGroupL( TAlfBridgerData& aData ); void HandleSetLayoutSwitchEffectL(); @@ -711,12 +746,26 @@ CHuiCanvasVisual* FindVisualByClientSideIds(TUint32 aClientSideId, TUint32 aClientSideGroupId ); /** + * FindChainedGroup + * + * Find chained windowgroup from iWindowChainsArray. Return 0, if not found. + */ + TUint32 FindChainedGroup(TUint32 aTreeNodeId); + + /** + * IsChainedGroup + * + * @return ETrue if group is chained. + */ + TBool IsChainedGroup(TUint32 aTreeNodeId); + + /** * This method finds controlgroup which has been assosiated with given window group id. * Control group may or may not be active in roster. * * @param aWindowGroupNodeId Node id of the window group, internal. */ - CHuiControlGroup* FindControlGroup(TInt aWindowGroupNodeId, TInt aScreenNumber ); + CHuiControlGroup* FindControlGroup(TInt aWindowGroupNodeId, TInt aScreenNumber = 0); /** * This method finds controlgroup which has been assosiated with window server window group id. @@ -740,6 +789,12 @@ * @return Pointer to found control gruop. NULL if not found. */ CHuiControlGroup* FindControlGroupBySecureId( TInt aSecureId, TInt aWgId = -1 ) const; + /** + * FindControlGroupBySecureId + * + * Returns a list of window groups belonging to aSecureId. + */ + void FindControlGroupBySecureId( TInt aSecureId, RPointerArray& aGroupList); /** * Finds control gruop which matches the full screen effect end state. @@ -761,7 +816,7 @@ * * @param aWindowGroupNodeId Node id of the window group, internal. */ - void DeleteControlGroupL(TInt aWindowGroupNodeId, TInt aScreenNumber ); + void DeleteControlGroupL(TInt aWindowGroupNodeId, TInt aScreenNumber = 0); /** * Creates a control group @@ -787,7 +842,7 @@ * */ - void ReorderAlfControlGroupsL( TInt aScreenNumber ); + void ReorderAlfControlGroupsL( TInt aScreenNumber = 0); /** * Called to notify the observer that a display refresh is about to begin. @@ -854,6 +909,16 @@ */ void UpdateRootVisualsToFullscreen(); + /** + * Report memory consumption details (if enabled). + */ + void ReportMemory(); + + /** + * Clears rasterizer cache. + */ + void ClearRasterizerCache(); + private: RPointerArray iAlfScreens; @@ -1009,6 +1074,18 @@ }; RHashMap iWindowHashArray; + + class TChainData + { + public: + TChainData(TUint32 aParent, TUint32 aChainee) : iParent(aParent), iChainee(aChainee) + { + } + TUint32 iParent; + TUint32 iChainee; + }; + RHashMap iWindowChainsArray; + CHuiControl* iOrphanStorage; // owned. holds the visuals which are orphaned from their control group class TRegisteredEffectsStruct {