uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp
branchRCL_3
changeset 9 3ac8bf5c5014
parent 8 46927d61fef3
child 10 7c5dd702d6d3
--- a/uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp	Wed Apr 14 16:53:50 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfappui.cpp	Tue Apr 27 17:34:42 2010 +0300
@@ -148,30 +148,42 @@
     void RunL()
         {
         iSema.Wait();
+        TInt position = iPosition;
+        TInt parentId = iParentIdentifier;
+        iSema.Signal();
+        TBool goOn = EFalse;
         if (iStatus.Int() == KErrNone)
             {
-            TRAPD(err, DoAdjustPositionL());
-            if (err)
-                {
-                __ALFLOGSTRING1("ALF: WG Parent not found, err %d", err);
-                }
-            }
+            do {
+                TRAPD(err, DoAdjustPositionL(position, parentId));
+                if (err)
+                    {
+                    __ALFLOGSTRING1("ALF: WG Parent not found, err %d", err);
+                    }
+                iSema.Wait();        
+                goOn = (iPosition != position || iParentIdentifier != parentId);
+                position = iPosition;
+                parentId = iParentIdentifier;
+                iSema.Signal();
+                } while(goOn);
+    		}
+        iSema.Wait();
         DoActivate();
         iSema.Signal();
         }
 
-    void DoAdjustPositionL()
+    void DoAdjustPositionL(TInt aPosition, TInt aParentIdentifier)
         {
-         __ALFLOGSTRING1("ALF: DoAdjustPositionL() %d", iPosition);
+         __ALFLOGSTRING1("ALF: DoAdjustPositionL() %d", aPosition);
                   
-        if (iPosition == CAlfAppServer::EAbsoluteBackground) // just for convenience
+        if (aPosition == CAlfAppServer::EAbsoluteBackground) // just for convenience
             {
             __ALFLOGSTRING("CAlfEventCatcher::DoAdjustPositionL - CAlfAppServer::EAbsoluteBackground");
             iWindowGroup.SetOrdinalPosition(-1,ECoeWinPriorityNeverAtFront);
             iWsSession.Flush();
             return;
             }
-        else if (iPosition == CAlfAppServer::EAlfWindowSize ) // just for developer convenience
+        else if (aPosition == CAlfAppServer::EAlfWindowSize ) // just for developer convenience
             {
             __ALFLOGSTRING("CAlfEventCatcher::DoAdjustPositionL - CAlfAppServer::EAlfWindowSize");
              // update window size when layout changes    
@@ -183,7 +195,7 @@
      
             
         TInt parentPriority = 
-            iWsSession.GetWindowGroupOrdinalPriority(iParentIdentifier);
+            iWsSession.GetWindowGroupOrdinalPriority(aParentIdentifier);
 
         // perhaps we should maintain wg-list elsewhere
         CArrayFixFlat<TInt>* wgs = new (ELeave) CArrayFixFlat<TInt>(1); 
@@ -195,9 +207,9 @@
         TInt wgCount = wgs->Count();
         for (TInt i = 0; i < wgCount; i++)
             {
-            if (iParentIdentifier == wgs->At(i))
+            if (aParentIdentifier == wgs->At(i))
                 {
-                if ( iPosition == CAlfAppServer::EOnTopOfParent )
+                if ( aPosition == CAlfAppServer::EOnTopOfParent )
                     {
                     pos = i;
                     }
@@ -432,11 +444,7 @@
         {
         iWsSession.ComputeMode(RWsSession::EPriorityControlDisabled);
         RThread thread; 
-#if defined(__EPOC32__)
-    thread.SetProcessPriority(EPriorityForeground);    
-#else
-    thread.SetPriority(EPriorityAbsoluteForegroundNormal);    
-#endif
+        thread.SetPriority(EPriorityAbsoluteForegroundNormal);    
         iScreenDevice =new(ELeave) CWsScreenDevice(iWsSession);
         iScreenDevice->Construct(0); // For main display only
 
@@ -861,11 +869,7 @@
     CHuiStatic::WsSession().ComputeMode(RWsSession::EPriorityControlDisabled);
 
     RThread thread; 
-#if defined(__EPOC32__)
-    thread.SetProcessPriority(EPriorityForeground);    
-#else
-    thread.SetPriority(EPriorityAbsoluteForegroundNormal);    
-#endif
+    thread.SetPriority(EPriorityAbsoluteForeground);    
 
     // delegates..
     iData->iResourceManager = CAlfSrvResourceManager::NewL( *iData->iHuiEnv );
@@ -1492,6 +1496,12 @@
     return iData->iServer->SrvSessionForControlGroup(aGroup);
     }
 
+
+TInt CAlfAppUi::GetLastActiveClient()
+    {
+    return iData->iServer->GetLastActiveClient();
+    }
+	
 void CAlfAppUi::DoBlankScreen(const RMessage2& aMessage)
     {
     __ALFLOGSTRING("CAlfAppUi::DoBlankScreen >>");