uiacceltk/hitchcock/ServerCore/Inc/alfbridge.h
branchRCL_3
changeset 20 31fccae4f8a7
parent 19 e5af45d51884
--- 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<CHuiControlGroup>& 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<CAlfScreen> iAlfScreens;
@@ -1009,6 +1074,18 @@
         };
     
     RHashMap<TUint32,THashVisualStruct> iWindowHashArray;
+    
+    class TChainData
+        {
+    public:
+        TChainData(TUint32 aParent, TUint32 aChainee) : iParent(aParent), iChainee(aChainee)
+            {
+            }
+        TUint32 iParent;
+        TUint32 iChainee;
+        };
+    RHashMap<TUint32,TChainData> iWindowChainsArray;
+    
     CHuiControl* iOrphanStorage; // owned. holds the visuals which are orphaned from their control group
     class TRegisteredEffectsStruct
         {