uiacceltk/hitchcock/ServerCore/Src/alfstreamerbridge.cpp
branchRCL_3
changeset 8 46927d61fef3
parent 6 10534483575f
child 9 3ac8bf5c5014
--- a/uiacceltk/hitchcock/ServerCore/Src/alfstreamerbridge.cpp	Wed Mar 31 23:03:58 2010 +0300
+++ b/uiacceltk/hitchcock/ServerCore/Src/alfstreamerbridge.cpp	Wed Apr 14 16:53:50 2010 +0300
@@ -21,6 +21,7 @@
 #include <coemain.h>
 #include "alfstreamerbridge.h"
 #include "alfstreamerserver.h"
+#include "alfbridge.h"
 #include "alflogger.h"
 
 #ifdef ALF_DEBUG_TRACK_DRAWING
@@ -28,7 +29,8 @@
 #endif
 
 
-// #define EGL_TALKS_TO_WINDOW_SERVER
+
+#define ALF_DRAW_FRAME_BEFORE_END_CALLBACK    
 
 // ---------------------------------------------------------------------------
 // constructor
@@ -83,7 +85,6 @@
 #ifdef ALF_DEBUG_TRACK_DRAWING
     iCommandDebugger = CAlfCommandDebug::NewL();
 #endif
-    CHuiEnv::Static()->iSwapObserver = this;
     }
 
 // ---------------------------------------------------------------------------
@@ -93,7 +94,6 @@
 // 
 CAlfStreamerBridge::~CAlfStreamerBridge()
     {
-    CHuiEnv::Static()->iSwapObserver = 0;
     iDataBuf.Close();
     iQueueSema.Close();
 #ifdef ALF_DEBUG_TRACK_DRAWING
@@ -173,21 +173,14 @@
 // 
 TInt CAlfStreamerBridge::AddData( TAlfDecoderServerBindings aOp,TInt aI1,TInt aI2 ,TAny* aPtr )
     {
-    if (iSwapActive && aOp == EAlfRequestCommitBatch)
-        {
-        __ALFLOGSTRING("CAlfStreamerBridge::AddData() just release window server");    
-        iBatchObserver->BridgerCallback(KRELEASEWINDOWSERVER,KRELEASEDBEFOREQUEUE);
-        return KErrNone;
-        }
-    
     TInt err = KErrNotFound;
         {    
 #ifdef ALF_DEBUG_TRACK_DRAWING    
         iCommandDebugger->SetDescription( aOp, R_ALF_BRIDGE_COMMAND_DESCRIPTION_ARRAY );
         __ALFLOGSTRING2("CAlfStreamerBridge::AddData op %S, iQueue.Length = %d", &iCommandDebugger->Text(), iQueue.Count());
-    #else
+#else
         __ALFLOGSTRING2("CAlfStreamerBridge::AddData op %d, iQueue.Length = %d", aOp, iQueue.Count());    
-    #endif
+#endif
         err = KErrNone;
         for(TInt i = 0; i < iMessages.Count(); i++ )
             {
@@ -229,56 +222,6 @@
     return data;    
     }
 
-void CAlfStreamerBridge::PrepareSwap()
-    {
-#ifdef EGL_TALKS_TO_WINDOW_SERVER
-    __ALFLOGSTRING("CAlfStreamerBridge:: Prepare swap, flush the queue");    
-    iSwapActive = ETrue;
-    if (iStatus.Int() >=0 && iMessages.Count() > iStatus.Int() )
-        {
-        Cancel(); // remove from scheduler
-        RunL(); // run manually (and activate)
-        }
-    __ALFLOGSTRING("CAlfStreamerBridge:: Prepare swap, the queue emptied");    
-#endif //#ifdef EGL_TALKS_TO_WINDOW_SERVER
-    }
-
-void CAlfStreamerBridge::SwapComplete()
-    {
-#ifdef EGL_TALKS_TO_WINDOW_SERVER
-    __ALFLOGSTRING("CAlfStreamerBridge:: Swap buffers complete");    
-    iSwapActive = EFalse;
-#endif // #ifdef EGL_TALKS_TO_WINDOW_SERVER
-
-    }
-	
-#ifdef EGL_TALKS_TO_WINDOW_SERVER
-void CAlfStreamerBridge::ReleaseWindowServer(TBool aRelease)
-    {
-    __ALFLOGSTRING1("CAlfStreamerBridge::ReleaseWindowServer: %d",aRelease);    
-    if (aRelease)
-        {
-        iMakeCurrentActive = ETrue;    
-        if (iBatchObserver && !iSwapActive)    
-            {
-            iBatchObserver->BridgerCallback(KRELEASEWINDOWSERVER);
-            }
-        }
-    else
-        {
-        iMakeCurrentActive = EFalse;
-        }                
-#else
-void CAlfStreamerBridge::ReleaseWindowServer(TBool)
-	{
-#endif
-    }
-
-void CAlfStreamerBridge::SetWgIdArray(TInt* aArray)
-    {
-    iWgArray = aArray;
-    }
-
 EXPORT_C TUid CAlfStreamerBridge::FindAppUidForWgId(TInt /*aWgId*/)
     {
     __ASSERT_DEBUG(EFalse, User::Leave(KErrNotSupported));
@@ -308,8 +251,16 @@
 #endif
     switch ( operation )
         {
-        // Just call back to Alf decoder thread
         case EAlfRequestCommitBatch:
+#ifdef ALF_DRAW_FRAME_BEFORE_END_CALLBACK    
+            {
+            CAlfBridge* bridge = dynamic_cast<CAlfBridge*>(iObserver);
+            if (bridge)
+                {
+                bridge->iHuiEnv->RefreshCallBack((TAny*)bridge->iHuiEnv);
+                }
+            } // fall through
+#endif
         case EAlfRequestCommandReadNotification:
         case EAlfReleaseTemporaryChunk:
             {
@@ -324,6 +275,7 @@
             {
             // Handle command
             __ALFLOGSTRING("CAlfStreamerBridge:: calling observer callback");
+            __ASSERT_ALWAYS(iObserver, User::Invariant());
             iObserver->HandleCallback(iStatus.Int());
             
             // For "getters" also call back to Alf decoder thread
@@ -368,6 +320,7 @@
                 {
 	            // Handle command
                 __ALFLOGSTRING("CAlfStreamerBridge:: calling observer callback");
+                __ASSERT_ALWAYS(iObserver, User::Invariant());
 	            iObserver->HandleCallback(iQueue[0]);
 	            
 	            // For "getters" also call back to Alf decoder thread
@@ -416,13 +369,7 @@
     {
     // Queue marker. Basically we could use one new member to assert that there can
     // be only one marker
-    __ALFLOGSTRING1("CAlfStreamerBridge:: Request command read notification, swap active: %d", iSwapActive );    
-   if ( iSwapActive || iMakeCurrentActive )
-        {
-        __ALFLOGSTRING("CAlfStreamerBridge::StartNewBlock() just release window server");    
-        iBatchObserver->BridgerCallback(KRELEASEWINDOWSERVER,KRELEASEDBEFOREQUEUE);
-        return;
-        }
+    //__ALFLOGSTRING1("CAlfStreamerBridge:: Request command read notification, swap active: %d", iSwapActive );    
     AddData(EAlfRequestCommitBatch,0,0,0);
     }
 
@@ -503,21 +450,3 @@
     {
     return GetVarDataL(aIndex);
     }
-
-// ---------------------------------------------------------------------------
-// SetStreamerServer
-// ---------------------------------------------------------------------------
-// 
-void CAlfStreamerBridge::SetStreamerServer( CAlfStreamerServer& aStreamerServer )
-    {
-    iStreamerServer = &aStreamerServer;   
-    }
-
-// ---------------------------------------------------------------------------
-// StreamerServer
-// ---------------------------------------------------------------------------
-// 
-CAlfStreamerServer* CAlfStreamerBridge::StreamerServer()
-    {
-    return iStreamerServer;
-    }