tvout/tvoutengine/src/glxhdmicontroller.cpp
branchGCC_SURGE
changeset 51 525c140ec8db
parent 36 6481344a6d67
child 52 a3a4c0de738e
--- a/tvout/tvoutengine/src/glxhdmicontroller.cpp	Wed Jun 16 13:08:54 2010 +0100
+++ b/tvout/tvoutengine/src/glxhdmicontroller.cpp	Thu Jul 22 16:33:32 2010 +0100
@@ -19,7 +19,7 @@
 #include <alf/alfutil.h>
 #include <glxtracer.h>
 #include <glxlog.h>
-#include "glxtv.h"                      // for CGlxTv
+
 #include "glxhdmicontainer.h"
 #include "glxhdmisurfaceupdater.h"
 
@@ -28,10 +28,10 @@
 // -----------------------------------------------------------------------------
 // NewLC
 // -----------------------------------------------------------------------------
-EXPORT_C CGlxHdmiController* CGlxHdmiController::NewL()
+EXPORT_C CGlxHdmiController* CGlxHdmiController::NewL(TBool aEfectsOn)
     {
     TRACER("CGlxHdmiController* CGlxHdmiController::NewL()");
-    CGlxHdmiController* self = new (ELeave) CGlxHdmiController();
+    CGlxHdmiController* self = new (ELeave) CGlxHdmiController(aEfectsOn);
     CleanupStack::PushL(self);
     self->ConstructL();
     CleanupStack::Pop(self);
@@ -53,10 +53,6 @@
         delete iFsBitmap;
         iFsBitmap = NULL;
         }
-    if(iGlxTvOut)
-		{
-        delete iGlxTvOut;
-		}
     }
 
 // -----------------------------------------------------------------------------
@@ -66,47 +62,45 @@
                                              TBool aStore)
     {
     TRACER("CGlxHdmiController::SetImageL()");
+    if (aFsBitmap == NULL || !aImageFile.Length())
+        {
+        GLX_LOG_INFO("CGlxHdmiController::SetImageL() - NULL Uri");
+        return;
+        }
     if (aStore)
         {
         iIsImageSupported = ETrue;
         StoreImageInfoL( aImageFile, aFsBitmap );
         }
-    if (iGlxTvOut->IsHDMIConnected())
+    GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
+    // do not close the surface , use the same surface instead.
+    // Call a function to pass imagefile
+    if (!iHdmiContainer)
+        {            
+        CreateHdmiContainerL(); 
+        }            
+    if (!iSurfaceUpdater)
         {
-        iIsPostingMode = ETrue;         // the image should be in posting mode
-        GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
-        // do not close the surface , use the same surface instead.
-        // Call a function to pass imagefile
-        if (!iHdmiContainer)
-            {            
-            CreateHdmiContainerL(); 
-            }            
-        if (!iSurfaceUpdater)
-            {
-            // This case would come when surface updater is not created at the first instance and also
-            // it satisfies the 720p condition                
-            CreateSurfaceUpdaterL(aImageFile);
-            }
-        else
-            {
-            GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
-            iSurfaceUpdater->UpdateNewImageL(aImageFile, aFsBitmap);
-            }
-        iHdmiContainer->DrawNow();
+        // This case would come when surface updater is not created at the first instance and also
+        // it satisfies the 720p condition                
+        CreateSurfaceUpdaterL(aImageFile);
         }
+    else
+        {
+        GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
+        iSurfaceUpdater->UpdateNewImageL(aImageFile, aFsBitmap);
+        }
+    iHdmiContainer->DrawNow();
     }
 
 // -----------------------------------------------------------------------------
-// IsVideo 
+// ItemNotSupported 
 // -----------------------------------------------------------------------------
 EXPORT_C void CGlxHdmiController::ItemNotSupported()
     {
     TRACER("CGlxHdmiController::IsVideo()");
     iIsImageSupported = EFalse;
-    if (iGlxTvOut->IsHDMIConnected())
-        {
-        DestroySurfaceUpdater();
-        }
+    DestroySurfaceUpdater();
     }
 
 
@@ -116,7 +110,7 @@
 EXPORT_C void CGlxHdmiController::ActivateZoom(TBool aAutoZoomOut)
     {
     TRACER("CGlxHdmiController::ActivateZoom()");
-    if (iGlxTvOut->IsHDMIConnected())
+    if (iSurfaceUpdater)
         {
         iSurfaceUpdater->ActivateZoom(aAutoZoomOut);
         }
@@ -128,7 +122,7 @@
 EXPORT_C void CGlxHdmiController::DeactivateZoom()
     {
     TRACER("CGlxHdmiController::DeactivateZoom()");
-    if (iGlxTvOut->IsHDMIConnected())
+    if (iSurfaceUpdater)
         {
         iSurfaceUpdater->DeactivateZoom();
         }
@@ -141,9 +135,8 @@
     {
     TRACER("CGlxHdmiController::ShiftToCloningMode()");
     // Shift to cloning only if HDMI is connected and surfaceupdater available.
-    if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
+    if (iSurfaceUpdater)
         {
-        iIsPostingMode = EFalse;
         iSurfaceUpdater->ShiftToCloningMode();
         }
     }
@@ -154,41 +147,46 @@
 EXPORT_C void CGlxHdmiController::ShiftToPostingMode()
     {
     TRACER("CGlxHdmiController::ShiftToPostingMode()");
-    if (iGlxTvOut->IsHDMIConnected())
+    if (!iSurfaceUpdater)
         {
-        if (!iSurfaceUpdater)
+        GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - 1");
+        // This case would come when HDMI connected, TvOut /headphones being connected
+        // and then it shows a popup of "microphone connected" 
+        // thus Background - Foreground when headphones connected during HDMI connected
+        if (iFsBitmap == NULL || !iStoredImagePath->Length())
             {
-            GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - 1");
-            // This case would come when HDMI connected, TvOut /headphones being connected
-            // and then it shows a popup of "microphone connected" 
-            // thus Background - Foreground when headphones connected during HDMI connected
-            SetImageL(iStoredImagePath->Des(), iFsBitmap, EFalse);
+            GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - NULL Uri");
+            return;
             }
-        else
-            {
-            GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - 2");
-            iSurfaceUpdater->ShiftToPostingMode();
-            }
-        iIsPostingMode = ETrue;
+        SetImageL(iStoredImagePath->Des(), iFsBitmap, EFalse);
+        }
+    else
+        {
+        GLX_LOG_INFO("CGlxHdmiController::ShiftToPostingMode() - 2");
+        iSurfaceUpdater->ShiftToPostingMode();
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// FadeSurface 
+// -----------------------------------------------------------------------------
+EXPORT_C void CGlxHdmiController::FadeSurface(TBool aFadeInOut)
+    {
+    TRACER("CGlxHdmiController::FadeSurface()");
+    if (iSurfaceUpdater)
+        {
+        iSurfaceUpdater->FadeTheSurface(aFadeInOut);
         }
     }
 
 // -----------------------------------------------------------------------------
-// IsHDMIConnected 
-// -----------------------------------------------------------------------------
-EXPORT_C TBool CGlxHdmiController::IsHDMIConnected()
-    {
-    TRACER("CGlxHdmiController::IsHDMIConnected()");
-    return iGlxTvOut->IsHDMIConnected(); 
-    }
-
-
-// -----------------------------------------------------------------------------
 // Constructor
 // -----------------------------------------------------------------------------
-CGlxHdmiController::CGlxHdmiController():
+CGlxHdmiController::CGlxHdmiController(TBool aEffectsOn):
             iFsBitmap(NULL),
-            iIsPostingMode(EFalse)
+            iStoredImagePath(NULL),
+            iEffectsOn(aEffectsOn)
     {
     TRACER("CGlxHdmiController::CGlxHdmiController()");
     // Implement nothing here
@@ -200,7 +198,6 @@
 void CGlxHdmiController::ConstructL()
     {
     TRACER("CGlxHdmiController::ConstructL()");
-    iGlxTvOut = CGlxTv::NewL(*this);
     }
 
 // -----------------------------------------------------------------------------
@@ -228,7 +225,6 @@
         delete iSurfaceUpdater;
         iSurfaceUpdater = NULL;
         }    
-    iIsPostingMode = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -247,9 +243,9 @@
 void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile)
     {
     TRACER("CGlxHdmiController::CreateSurfaceUpdater()");
-    RWindow* window = iHdmiContainer->GetWindow();
-    iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, iFsBitmap,
-                                                    iHdmiContainer);
+    iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(iHdmiContainer->GetWindow(), 
+                                                aImageFile, iFsBitmap,iHdmiContainer,
+                                                iEffectsOn);
     iHdmiContainer->DrawNow();
     }
 
@@ -274,35 +270,3 @@
     iFsBitmap->Duplicate(aFsBitmap->Handle());
     }
 
-// -----------------------------------------------------------------------------
-// HandleTvStatusChangedL 
-// -----------------------------------------------------------------------------
-void CGlxHdmiController::HandleTvStatusChangedL( TTvChangeType aChangeType )
-    {
-    TRACER("CGlxHdmiController::HandleTvStatusChangedL()");
-    if ( aChangeType == ETvConnectionChanged )          
-        {
-        if ( iGlxTvOut->IsHDMIConnected() && iGlxTvOut->IsConnected() && iSurfaceUpdater)
-            {
-            GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI and TV Connected");
-            // Do nothing , as this means HDMI is already connected and headset/tv cable connected
-            // meaning we shouldnt destroy HDMI and neither have to create surface updater.
-            return;
-            }
-        else if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported && iIsPostingMode)
-            {
-            GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected");
-            // Calling SetImageL() with appropriate parameters
-            SetImageL(iStoredImagePath->Des(), iFsBitmap, EFalse);
-            }
-        else
-            {
-            GLX_LOG_INFO3("CGlxHdmiController::HandleTvStatusChangedL() iIsImageSupported=%d, iGlxTvOut->IsHDMIConnected()=%d, iIsPostingMode=%d", 
-                    iIsImageSupported,iGlxTvOut->IsHDMIConnected(),iIsPostingMode);
-            // if it gets disconnected, destroy the surface 
-            GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Not Connected");
-            DestroySurfaceUpdater();
-            }
-        }
-    }
-