--- 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;
- }