diff -r f7f0874bfe7d -r 6b87b143d312 photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp --- a/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp Tue Feb 02 10:12:14 2010 +0200 +++ b/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp Fri Feb 19 22:51:01 2010 +0200 @@ -60,6 +60,10 @@ { TRACER("CGlxHdmiSurfaceUpdater::~CGlxHdmiSurfaceUpdater()"); ReleaseContent(); + if(iWindow) + { + iWindow->RemoveBackgroundSurface(ETrue); + } if(iTimer->IsActive()) { iTimer->Cancel(); @@ -138,7 +142,7 @@ { User::LeaveIfError(error); } - + iBitmapReady = EFalse; // Create the active object iGlxDecoderAO = CGlxHdmiDecoderAO::NewL(this, iFrameCount); CreateImageDecoderL(iImagePath); @@ -171,6 +175,7 @@ TInt /*aFrameCount*/) { TRACER("CGlxHdmiSurfaceUpdater::UpdateNewImageL()"); + iBitmapReady = EFalse; ReleaseContent(); CreateImageDecoderL(aImageFile); CreateBitmapL(); @@ -203,9 +208,7 @@ CActive::EPriorityStandard-1); CActiveScheduler::Add(iSurfBufferAO); } - - //Set the background Surface - iWindow->SetBackgroundSurface(iSurfId); + } // ----------------------------------------------------------------------------- @@ -240,6 +243,9 @@ } //Map the surface and stride the surface info MapSurfaceL(); + //Set the background Surface + iWindow->SetBackgroundSurface(iSurfId); + } // ----------------------------------------------------------------------------- @@ -365,7 +371,7 @@ GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took" " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); #endif - + iBitmapReady = ETrue; iZoomRectSz = iDecodedBitmap->SizeInPixels(); if (iSurfBufferAO->iStatus != KRequestPending && !iSurfBufferAO->IsActive()) { @@ -375,6 +381,12 @@ iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus); TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL); } + //release imagedecoder after the conversion is over + if(iImageDecoder) + { + delete iImageDecoder; + iImageDecoder = NULL; + } } // ----------------------------------------------------------------------------- @@ -399,7 +411,7 @@ TRACER("CGlxHdmiSurfaceUpdater::ActivateZoom()"); iConfig.SetSurfaceId(iSurfId); iZoom = ETrue; - if(!iTimer->IsActive()) + if(!iTimer->IsActive() && iBitmapReady) { iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this )); } @@ -472,3 +484,21 @@ iConfig.SetExtent(TRect(0,0,KHdTvWidth,KHdTvHeight)); iWindow->SetBackgroundSurface(iConfig, ETrue); } + +// ----------------------------------------------------------------------------- +// ShiftToCloningMode +// ----------------------------------------------------------------------------- +void CGlxHdmiSurfaceUpdater::ShiftToCloningMode() + { + TRACER("CGlxHdmiSurfaceUpdater::ShiftToCloningMode()"); + iWindow->RemoveBackgroundSurface(ETrue); + } + +// ----------------------------------------------------------------------------- +// ShiftToPostingMode +// ----------------------------------------------------------------------------- +void CGlxHdmiSurfaceUpdater::ShiftToPostingMode() + { + TRACER("CGlxHdmiSurfaceUpdater::ShiftToPostingMode()"); + iWindow->SetBackgroundSurface(iSurfId); + }