diff -r 5b238bc8ffb6 -r 01504893d9cb photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp --- a/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp Wed Sep 15 12:13:06 2010 +0300 +++ b/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp Wed Oct 13 14:32:09 2010 +0300 @@ -490,6 +490,19 @@ } else { + TInt focus = iMediaList.FocusIndex(); + const TGlxMedia item = iMediaList.Item(focus); + TGlxIdSpaceId spaceId = iMediaList.IdSpaceId(focus); + GLX_LOG_INFO("CGlxZoomControl::HandleZoomForegroundEvent - Get the FS texture"); + // Get the texture created in fullscreen view. + TRAPD(err, iImageTexture = &(iTextureMgr->CreateNewTextureForMediaL( + ScreenSize(), item, spaceId, this))); + + if (iImageTexture && iImageTexture->HasContent() && KErrNone == err) + { + GLX_LOG_INFO("CGlxZoomControl::HandleZoomForegroundEvent - Show the FS texture"); + iImageVisual->SetImage(*iImageTexture); + } iGPUMemMonitor->RequestMemory(); } } @@ -552,9 +565,11 @@ // TextureContentChangedL // ----------------------------------------------------------------------------- // -void CGlxZoomControl::TextureContentChangedL( TBool /*aHasContent*/ , CAlfTexture* aNewTexture) +void CGlxZoomControl::TextureContentChangedL(TBool aHasContent, + CAlfTexture* aNewTexture) { TRACER("CGlxZoomControl::TextureContentChangedL "); + GLX_LOG_INFO2("CGlxZoomControl::TextureContentChangedL() aNewTexture=%x, aHasContent=%d", aNewTexture, aHasContent); //if both the textures are null that means we do not have memory to //decode and show anything. So try and check if the fullscreen texture //is created by now if not then go to fullscreen view. @@ -563,40 +578,43 @@ { if(NULL == iImageTexture) { - TSize TextureSize = ScreenSize(); + TSize textureSize = ScreenSize(); TInt focus = iMediaList.FocusIndex(); TGlxMedia item = iMediaList.Item( focus ); TGlxIdSpaceId idspace = iMediaList.IdSpaceId( focus ); CAlfTexture* newTexture = NULL; - //Get the texture Created in fullscreen View. - TRAPD(errtexture, newTexture = &(iTextureMgr->CreateNewTextureForMediaL( - TextureSize,item, idspace, this ))); + // Get the texture created in fullscreen view. + TRAPD(err, newTexture = &(iTextureMgr->CreateNewTextureForMediaL( + textureSize,item, idspace, this))); - if(errtexture != KErrNone) + GLX_LOG_INFO2("CGlxZoomControl::TextureContentChangedL(1) newTexture=%x, err=%d", newTexture, err); + if(newTexture && newTexture->HasContent() && err == KErrNone) { - GLX_LOG_INFO( "CGlxTextureManagerImpl::HandleBitmapDecodedL::CreateNewTextureForMediaL Failed"); - //Exit zoom and goto fullscreen - HandleZoomOutL(KGlxZoomOutCommand); + GLX_LOG_INFO("CGlxZoomControl::TextureContentChangedL:Show FS texture"); + // Show the fullscreen texture. + iImageTexture = newTexture; + iImageVisual->SetImage(*iImageTexture); } else { - //show the fullscreen texture. - iImageTexture = newTexture; - iImageVisual->SetImage( *iImageTexture ); + GLX_LOG_INFO("CGlxZoomControl::TextureContentChangedL:CreateNewTextureForMediaL Failed"); + // Exit zoom and goto fullscreen + HandleZoomOutL(KGlxZoomOutCommand); } } - else + else if (iImageTexture->HasContent()) { - //show the existing first level decoded image texture in case second level - //decoding fails - iImageVisual->SetImage( *iImageTexture ); + // Show the existing decoded image texture + GLX_LOG_INFO("CGlxZoomControl::TextureContentChangedL - Show the existing texture"); + iImageVisual->SetImage(*iImageTexture); } } - else + else if (aHasContent && aNewTexture->HasContent()) { + GLX_LOG_INFO("CGlxZoomControl::TextureContentChangedL - Show the NEW texture"); iImageTexture = aNewTexture; - iImageVisual->SetImage( *iImageTexture ); + iImageVisual->SetImage(*iImageTexture); } } @@ -960,7 +978,6 @@ { //Refeed the textures if we are coming back to foreground from background //To Retrive the image details - TMPXAttribute thumbNailAttribute(0, 0); TInt focusIndex = iMediaList.FocusIndex(); TGlxIdSpaceId idspace = iMediaList.IdSpaceId(focusIndex); //Get the texture Created in fullscreen View. @@ -968,16 +985,17 @@ // if we already have the decoded zoomed image bitmap use the texture corresponding to that. // Else make do with the fullscreen texture till that happens. - TRAP_IGNORE(iImageTexture = - iTextureMgr->CreateZoomedTextureL()); + TRAPD(err, iImageTexture = iTextureMgr->CreateZoomedTextureL()); - if (NULL == iImageTexture) + GLX_LOG_INFO2("CGlxZoomControl::HandleGoomMemoryReleased(1) iImageTexture=%x err=%d", iImageTexture, err); + if (!iImageTexture || KErrNone != err) { - TRAP_IGNORE(iImageTexture = &(iTextureMgr->CreateNewTextureForMediaL( + TRAP(err, iImageTexture = &(iTextureMgr->CreateNewTextureForMediaL( ScreenSize(), item, idspace, this))) } - if (NULL != iImageTexture) + GLX_LOG_INFO2("CGlxZoomControl::HandleGoomMemoryReleased(2) iImageTexture=%x err=%d", iImageTexture, err); + if (iImageTexture && iImageTexture->HasContent() && KErrNone == err) { iImageVisual->SetImage(*iImageTexture); return;