photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp
branchRCL_3
changeset 25 191387a8b767
parent 18 bcb43dc84c44
child 30 a60acebbbd9d
equal deleted inserted replaced
22:2dac0fdba72b 25:191387a8b767
    47     TRACER("CGlxHdmiController::~CGlxHdmiController()");
    47     TRACER("CGlxHdmiController::~CGlxHdmiController()");
    48     DestroySurfaceUpdater();
    48     DestroySurfaceUpdater();
    49     DestroyContainer();
    49     DestroyContainer();
    50     delete iStoredImagePath;
    50     delete iStoredImagePath;
    51     iStoredImagePath = NULL;
    51     iStoredImagePath = NULL;
       
    52     if (iFsBitmap)
       
    53         {
       
    54         delete iFsBitmap;
       
    55         iFsBitmap = NULL;
       
    56         }
    52     if(iGlxTvOut)
    57     if(iGlxTvOut)
    53 		{
    58 		{
    54         delete iGlxTvOut;
    59         delete iGlxTvOut;
    55 		}
    60 		}
    56     }
    61     }
    57 
    62 
    58 // -----------------------------------------------------------------------------
    63 // -----------------------------------------------------------------------------
    59 // Setting an Image Path 
    64 // Setting an Image Path 
    60 // -----------------------------------------------------------------------------
    65 // -----------------------------------------------------------------------------
    61 EXPORT_C void CGlxHdmiController::SetImageL(const TDesC& aImageFile,
    66 EXPORT_C void CGlxHdmiController::SetImageL(const TDesC& aImageFile, CFbsBitmap* aFsBitmap,
    62                                              TBool aStore)
    67                                              TBool aStore)
    63     {
    68     {
    64     TRACER("CGlxHdmiController::SetImageL()");
    69     TRACER("CGlxHdmiController::SetImageL()");
    65     if (aStore)
    70     if (aStore)
    66         {
    71         {
    67         iIsImageSupported = ETrue;
    72         iIsImageSupported = ETrue;
    68         StoreImageInfoL(aImageFile);
    73         StoreImageInfoL( aImageFile, aFsBitmap );
    69         }
    74         }
    70     if (iGlxTvOut->IsHDMIConnected())
    75     if (iGlxTvOut->IsHDMIConnected())
    71         {
    76         {
    72 		iIsPostingMode = ETrue;
       
    73             GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
    77             GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2");
    74             // do not close the surface , use the same surface instead.
    78             // do not close the surface , use the same surface instead.
    75             // Call a function to pass imagefile
    79             // Call a function to pass imagefile
    76             if (!iHdmiContainer)
    80             if (!iHdmiContainer)
    77                 {            
    81                 {            
    84                 CreateSurfaceUpdaterL(aImageFile);
    88                 CreateSurfaceUpdaterL(aImageFile);
    85                 }
    89                 }
    86             else
    90             else
    87                 {
    91                 {
    88             GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
    92             GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3");
    89             iSurfaceUpdater->UpdateNewImageL(aImageFile);
    93             iSurfaceUpdater->UpdateNewImageL(aImageFile, aFsBitmap);
    90             }
    94             }
    91         iHdmiContainer->DrawNow();
    95         iHdmiContainer->DrawNow();
    92         }
    96         }
    93     }
    97     }
    94 
    98 
   134 // ShiftToCloningMode 
   138 // ShiftToCloningMode 
   135 // -----------------------------------------------------------------------------
   139 // -----------------------------------------------------------------------------
   136 EXPORT_C void CGlxHdmiController::ShiftToCloningMode()
   140 EXPORT_C void CGlxHdmiController::ShiftToCloningMode()
   137     {
   141     {
   138     TRACER("CGlxHdmiController::ShiftToCloningMode()");
   142     TRACER("CGlxHdmiController::ShiftToCloningMode()");
   139     iIsPostingMode = EFalse;
       
   140     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
   143     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
   141         {
   144         {
   142         iSurfaceUpdater->ShiftToCloningMode();
   145         iSurfaceUpdater->ShiftToCloningMode();
   143         }
   146         }
   144     }
   147     }
   147 // ShiftToPostingMode 
   150 // ShiftToPostingMode 
   148 // -----------------------------------------------------------------------------
   151 // -----------------------------------------------------------------------------
   149 EXPORT_C void CGlxHdmiController::ShiftToPostingMode()
   152 EXPORT_C void CGlxHdmiController::ShiftToPostingMode()
   150     {
   153     {
   151     TRACER("CGlxHdmiController::ShiftToPostingMode()");
   154     TRACER("CGlxHdmiController::ShiftToPostingMode()");
   152     iIsPostingMode = ETrue;
       
   153     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
   155     if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater)
   154         {
   156         {
   155         iSurfaceUpdater->ShiftToPostingMode();
   157         iSurfaceUpdater->ShiftToPostingMode();
   156         }
   158         }
   157     }
   159     }
   158 
   160 
   159 // -----------------------------------------------------------------------------
   161 // -----------------------------------------------------------------------------
   160 // Constructor
   162 // Constructor
   161 // -----------------------------------------------------------------------------
   163 // -----------------------------------------------------------------------------
   162 CGlxHdmiController::CGlxHdmiController():
   164 CGlxHdmiController::CGlxHdmiController():
   163         iIsPostingMode(EFalse)
   165             iFsBitmap(NULL)
   164     {
   166     {
   165     TRACER("CGlxHdmiController::CGlxHdmiController()");
   167     TRACER("CGlxHdmiController::CGlxHdmiController()");
   166     // Implement nothing here
   168     // Implement nothing here
   167     }
   169     }
   168 
   170 
   218 // -----------------------------------------------------------------------------
   220 // -----------------------------------------------------------------------------
   219 void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile)
   221 void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile)
   220     {
   222     {
   221     TRACER("CGlxHdmiController::CreateSurfaceUpdater()");
   223     TRACER("CGlxHdmiController::CreateSurfaceUpdater()");
   222     RWindow* window = iHdmiContainer->GetWindow();
   224     RWindow* window = iHdmiContainer->GetWindow();
   223     iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, 
   225     iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, iFsBitmap,
   224                                                     iHdmiContainer);
   226                                                     iHdmiContainer);
   225     iHdmiContainer->DrawNow();
   227     iHdmiContainer->DrawNow();
   226     }
   228     }
   227 
   229 
   228 // -----------------------------------------------------------------------------
   230 // -----------------------------------------------------------------------------
   229 // StoreImageInfoL 
   231 // StoreImageInfoL 
   230 // -----------------------------------------------------------------------------
   232 // -----------------------------------------------------------------------------
   231 void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile)
   233 void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile, CFbsBitmap* aFsBitmap)
   232     {
   234     {
   233     TRACER("CGlxHdmiController::StoreImageInfoL()");
   235     TRACER("CGlxHdmiController::StoreImageInfoL()");
   234     if(iStoredImagePath)
   236     if(iStoredImagePath)
   235         {
   237         {
   236         delete iStoredImagePath;
   238         delete iStoredImagePath;
   237         iStoredImagePath = NULL;
   239         iStoredImagePath = NULL;
   238         }
   240         }
       
   241     if (iFsBitmap)
       
   242         {
       
   243         delete iFsBitmap;
       
   244         iFsBitmap = NULL;
       
   245         }
   239     iStoredImagePath = aImageFile.AllocL();
   246     iStoredImagePath = aImageFile.AllocL();
       
   247     iFsBitmap = new (ELeave) CFbsBitmap;
       
   248     iFsBitmap->Duplicate(aFsBitmap->Handle());
   240     }
   249     }
   241 
   250 
   242 // -----------------------------------------------------------------------------
   251 // -----------------------------------------------------------------------------
   243 // HandleTvStatusChangedL 
   252 // HandleTvStatusChangedL 
   244 // -----------------------------------------------------------------------------
   253 // -----------------------------------------------------------------------------
   245 void CGlxHdmiController::HandleTvStatusChangedL( TTvChangeType aChangeType )
   254 void CGlxHdmiController::HandleTvStatusChangedL( TTvChangeType aChangeType )
   246     {
   255     {
   247     TRACER("CGlxHdmiController::HandleTvStatusChangedL()");
   256     TRACER("CGlxHdmiController::HandleTvStatusChangedL()");
   248     if ( aChangeType == ETvConnectionChanged )          
   257     if ( aChangeType == ETvConnectionChanged )          
   249         {
   258         {
   250         if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported && iIsPostingMode)
   259         if ( iGlxTvOut->IsHDMIConnected() && iIsImageSupported )
   251             {
   260             {
   252             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected");
   261             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected");
   253             // Calling SetImageL() with appropriate parameters
   262             // Calling SetImageL() with appropriate parameters
   254             SetImageL(iStoredImagePath->Des(), EFalse);
   263             SetImageL(iStoredImagePath->Des(), iFsBitmap, EFalse);
   255             }
   264             }
   256         else
   265         else
   257             {
   266             {
       
   267             GLX_LOG_INFO2("CGlxHdmiController::HandleTvStatusChangedL() iIsImageSupported=%d, iGlxTvOut->IsHDMIConnected()=%d", 
       
   268                     iIsImageSupported,iGlxTvOut->IsHDMIConnected());
   258             // if it gets disconnected, destroy the surface 
   269             // if it gets disconnected, destroy the surface 
   259             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Not Connected");
   270             GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Not Connected");
   260             DestroySurfaceUpdater();
   271             DestroySurfaceUpdater();
   261             }
   272             }
   262         }
   273         }