uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp
branchRCL_3
changeset 8 10534483575f
parent 7 433cbbb6a04b
child 10 88b23e2e82e1
--- a/uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp	Fri Mar 12 15:47:04 2010 +0200
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp	Mon Mar 15 12:43:37 2010 +0200
@@ -36,6 +36,8 @@
 #include <uiacceltk/HuiTextVisual.h>
 #include <uiacceltk/HuiGradientBrush.h>
 #include <apgwgnam.h>
+#include <akntransitionutils.h>
+#include "alfeffectutils.h"
 
 #ifdef ALF_USE_CANVAS
 #include <uiacceltk/HuiCanvasVisual.h>
@@ -518,7 +520,7 @@
 #endif
             
 			// This is a workaround for possibly missing command buffers at layout switch
-            iWsSession.ClearAllRedrawStores(); 
+            // iWsSession.ClearAllRedrawStores(); 
             
             __ALFLOGSTRING2("ALF EventWin: Size(%d,%d)", iWindow->Size().iWidth, iWindow->Size().iHeight );
             //and fall through
@@ -641,8 +643,6 @@
     CHuiDisplay* iMainDisplay;
     CHuiDisplay* iTVDisplay;
     CAlfEventBridge* iEventAo;
-    RAlfTfxClient iDsServer;
-    TBool iDsActivated;
     };
 
 // ======== MEMBER FUNCTIONS ========
@@ -980,7 +980,7 @@
         {
         if (iData->iMainDisplay) // TBD: multiple display support once again...
             {
-            iData->iMainDisplay->SetClearBackgroundL(CHuiDisplay::EClearNone);
+            TRAP_IGNORE(iData->iMainDisplay->SetClearBackgroundL(CHuiDisplay::EClearNone));
             }
         }
     }
@@ -1406,26 +1406,6 @@
 //
 void CAlfAppUi::NotifyLowMemory(TInt aAmountOfFreeMemRequested)
     {
-    if (!iData->iDsActivated)            
-        {
-        if (iData->iDsServer.Open() == KErrNone)
-            {
-            iData->iDsActivated = ETrue;            
-            }
-        }
-    
-    if (iData->iDsActivated )
-        {
-        if (!aAmountOfFreeMemRequested)
-            {
-            iData->iDsServer.SendSynch(KAlfCompositionGoodOnGraphicsMemory, TIpcArgs());
-            }
-        else
-            {          
-            iData->iDsServer.SendSynch(KAlfCompositionLowOnGraphicsMemory, TIpcArgs());
-            }
-        }
-
 /*
 	// Toggle between normal & low memory levels
     if (!aAmountOfFreeMemRequested)
@@ -1458,8 +1438,76 @@
     return iData->iBridgeObj->ForceSwRendering( aEnabled );
     }
     
+// ---------------------------------------------------------------------------
+// GetSizeAndRotation
+// ---------------------------------------------------------------------------
+//
+TInt CAlfAppUi::GetSizeAndRotation(TSize& aSize, TInt& aRotation)
+    {
+    return iData->iBridgeObj->GetSizeAndRotation(aSize, aRotation);
+    }
+    
+// ---------------------------------------------------------------------------
+// ReadPixels
+// ---------------------------------------------------------------------------
+//
+TInt CAlfAppUi::ReadPixels(CFbsBitmap* aBitmap)
+    {
+    return iData->iBridgeObj->ReadPixels(aBitmap);
+    }
+    
 void CAlfAppUi::SetAlfAppWindowGroup( TInt aID )
     {
     iData->iBridgeObj->SetWindowGroupAsAlfApp( aID );
     }
+
+CAlfAppSrvSessionBase* CAlfAppUi::SrvSessionForControlGroup(CHuiControlGroup& aGroup)
+    {
+    return iData->iServer->SrvSessionForControlGroup(aGroup);
+    }
+
+void CAlfAppUi::DoBlankScreen(const RMessage2& aMessage)
+    {
+    __ALFLOGSTRING("CAlfAppUi::DoBlankScreen >>");
+    TSecureId capServerId(0x10207218);    
+    TSecurityPolicy policy(capServerId);
+    if (!policy.CheckPolicy(aMessage))
+        {
+        User::Leave(KErrPermissionDenied);    
+        }
+    
+	if (iData->iBridgeObj->LayoutSwitchEffectCoordinator())
+		{
+		iData->iBridgeObj->LayoutSwitchEffectCoordinator()->EnableSafeCounter(EFalse); // let capserver rule  
+		}
+  
+    TBool pause = aMessage.Int0();
+    if ( pause && 
+        CAknTransitionUtils::TransitionsEnabled(AknTransEffect::ELayoutswitchTransitionsOff ) && 
+        iData->iBridgeObj->LayoutSwitchEffectCoordinator() && 
+        iData->iBridgeObj->LayoutSwitchEffectCoordinator()->LayoutSwitchEffectsExist() 
+        )
+        { // don't pause if effects are there, releasing the blanker needs to be allowed still
+        __ALFLOGSTRING("CAlfAppUi::DoBlankScreen << - Effects on");
+	    return;
+        }        
+    
+    if (pause != iData->iHuiEnv->iPauseDrawing)
+        {
+        iData->iHuiEnv->iPauseDrawing = pause;
+        __ALFLOGSTRING1("CAlfAppUi::DoBlankScreen pausing %d",pause);
+        TRAP_IGNORE(iData->iHuiEnv->Display(0).Roster().FreezeVisibleContentL(pause));
+		if (!pause)
+            { // make sure that toolkit will traverse through scene
+            iData->iHuiEnv->StartRefresh(1);
+            }    
+		else
+		    {
+            iData->iBridgeObj->LayoutSwitchEffectCoordinator()->Cancel();
+		    }
+        }
+    __ALFLOGSTRING("CAlfAppUi::DoBlankScreen <<");
+    // let the session complete message  
+    }
+
 // end of file