diff -r 2a9601315dfc -r 98ccebc37403 javauis/mmapi_akn/baseline/src/cmmacamerawindow.cpp --- a/javauis/mmapi_akn/baseline/src/cmmacamerawindow.cpp Mon May 03 12:27:20 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmacamerawindow.cpp Fri May 14 15:47:24 2010 +0300 @@ -206,7 +206,6 @@ // Stop and start ViewFinder to update position ResetViewFinder(); } - } @@ -311,8 +310,6 @@ *this, CMMACameraWindow::EResetViewFinder); } } - - } @@ -616,10 +613,6 @@ { iUICamera->StopViewFinder(); } - if (iDirectAccess->IsActive()) - { - iDirectAccess->Cancel(); - } iViewFinderVisible = EFalse; } @@ -717,11 +710,12 @@ } else { - DEBUG_INT( - "MMA::CMMACameraWindow::StartViewFinder() - \ -StartViewFinderDirectL error=%d", vfError); + DEBUG_INT("MMA::CMMACameraWindow::StartViewFinder() - \ + StartViewFinderDirectL error=%d", vfError); - TRAP_IGNORE(DrawViewFinderErrorL(vfError, drawRect)); + TRAPD(error, DrawViewFinderErrorL(vfError, drawRect)); + DEBUG_INT("MMA::CMMACameraWindow::StartViewFinder, \ + DrawViewFinderErrorL error = %d", error); } DEBUG(" > StartViewFinder"); @@ -738,8 +732,18 @@ const TInt /*aError*/, const TRect& aDrawRect) { + if (!iDirectAccess) + { + if (!iWs || !iScreenDevice || !iWindow) return; - ASSERT(iDirectAccess); + DEBUG("MMA::CMMACameraWindow::DrawViewFinderErrorL - \ + Instantiating CDirectScreenAccess"); + iDirectAccess = CDirectScreenAccess::NewL(*iWs, + *iScreenDevice, + *iWindow, + *this); + } + TInt dcError = KErrNone; if (!iDirectAccess->IsActive()) { @@ -831,9 +835,12 @@ delete iUICamera; iUICamera = NULL; iCameraPowerOn = EFalse; - iDirectAccess->Cancel(); - delete iDirectAccess; - iDirectAccess = NULL; + if (iDirectAccess) + { + iDirectAccess->Cancel(); + delete iDirectAccess; + iDirectAccess = NULL; + } delete iErrorIconBitmap; iErrorIconBitmap = NULL; delete iErrorIconMaskBitmap; @@ -882,15 +889,6 @@ CWsScreenDevice &aScreenDevice, RWindowBase &aWindow) { - TRAPD(error, iDirectAccess = CDirectScreenAccess::NewL(aWs, - aScreenDevice, - aWindow, - *this)); - DEBUG_INT("MMA::CMMACameraWindow::MdcDSAResourcesCallback, error = %d", error); - if (KErrNone != error) - { - return; - } this->UIStartViewFinder(aWs, aScreenDevice, aWindow); }