diff -r 65b472535a0d -r d40e813b23c0 htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp --- a/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp Mon Jun 21 15:41:16 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp Thu Jul 15 18:39:46 2010 +0300 @@ -44,6 +44,7 @@ _LIT8( KErrorNoCommand, "ERROR: No command given" ); _LIT8( KErrorUnknownCmd, "ERROR: Unknown Camera Service command" ); _LIT8( KErrorInitFailed, "ERROR: Failed to init"); +_LIT8( KErrorUninitialized, "ERROR: Uninitialized"); _LIT8( KErrInvalidateParameters, "ERROR: Invalidate parameters"); _LIT8( KErrQualityLevel, "ERROR: Invalidate quality level"); _LIT8( KErrorPrepareVideoRecordingFailed, "ERROR: Prepare video recording failed"); @@ -83,7 +84,6 @@ void CHtiCameraServicePlugin::ConstructL() { HTI_LOG_TEXT( "CHtiCameraServicePlugin::ConstructL" ); - iVideoRecordingEngine = CEngineVideoRecording::NewL(*this, 0); iWaiter = new ( ELeave ) CActiveSchedulerWait; } @@ -106,8 +106,11 @@ // Destructor CHtiCameraServicePlugin::~CHtiCameraServicePlugin() { - delete iVideoRecordingEngine; - iVideoRecordingEngine = NULL; + if(iVideoRecordingEngine) + { + delete iVideoRecordingEngine; + iVideoRecordingEngine = NULL; + } delete iWaiter; iWaiter = NULL; @@ -146,8 +149,11 @@ switch (command) { - case ECmdInit: - TRAP(err, HandleInitCmdL(aMessage.Right( aMessage.Length() - 1 ))); + case ECmdInitialize: + TRAP(err, HandleInitializeCmdL(aMessage.Right( aMessage.Length() - 1 ))); + break; + case ECmdUninitialize: + TRAP(err, HandleUninitializeCmdL(aMessage.Right( aMessage.Length() - 1 ))); break; case ECmdPrepareVideoRecording: TRAP(err, HandlePrepareVideoRecordingCmdL(aMessage.Right( aMessage.Length() - 1 ))); @@ -187,9 +193,9 @@ HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::ProcessMessageL" ); } -void CHtiCameraServicePlugin::HandleInitCmdL( const TDesC8& aData ) +void CHtiCameraServicePlugin::HandleInitializeCmdL( const TDesC8& aData ) { - HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleInitCmdL" ); + HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleInitializeCmdL" ); if(aData.Length() != 0) { SendErrorMessageL(KErrArgument, KErrInvalidateParameters); @@ -197,6 +203,13 @@ } HTI_LOG_TEXT("Initializes Camera Application Engine"); + if(iVideoRecordingEngine) + { + delete iVideoRecordingEngine; + iVideoRecordingEngine = NULL; + } + + iVideoRecordingEngine = CEngineVideoRecording::NewL(*this, 0); iVideoRecordingEngine->InitL(); iWaiter->Start(); if(iError != KErrNone) @@ -211,9 +224,30 @@ SendOkMsgL(KNullDesC8); } - HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleInitCmdL" ); + HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleInitializeCmdL" ); } +void CHtiCameraServicePlugin::HandleUninitializeCmdL(const TDesC8& aData) + { + HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::HandleUninitializeCmdL" ); + if(aData.Length() != 0) + { + SendErrorMessageL(KErrArgument, KErrInvalidateParameters); + return; + } + + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + + delete iVideoRecordingEngine; + iVideoRecordingEngine = NULL; + + SendOkMsgL(KNullDesC8); + HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::HandleUninitializeCmdL" ); + } void CHtiCameraServicePlugin::HandlePrepareVideoRecordingCmdL( const TDesC8& aData ) { @@ -224,6 +258,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + TInt qualityLevelIndex = aData[0]; if(qualityLevelIndex < 0 || qualityLevelIndex > iVideoRecordingEngine->VideoQualityCount() -1) { @@ -267,6 +307,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + HTI_LOG_TEXT("Start video recording..."); iVideoRecordingEngine->StartVideoRecording(); @@ -291,6 +337,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + HTI_LOG_TEXT("Pausing video recording"); iVideoRecordingEngine->PauseVideoRecording(); if(iError != KErrNone) @@ -313,6 +365,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + HTI_LOG_TEXT("Resume video recording..."); iVideoRecordingEngine->ResumeVideoRecording(); @@ -336,6 +394,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + HTI_LOG_TEXT("Stop video recording"); iVideoRecordingEngine->StopVideoRecording(); if(iError != KErrNone) @@ -358,6 +422,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + HTI_LOG_TEXT("Close video recording"); iVideoRecordingEngine->CloseVideoRecording(); SendOkMsgL(KNullDesC8); @@ -373,6 +443,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + TUint8 zoomMode = (TUint8)iVideoRecordingEngine->ZoomMode(); HTI_LOG_FORMAT("Current zoom mode: %d", zoomMode); @@ -404,6 +480,12 @@ return; } + if(iVideoRecordingEngine == NULL) + { + SendErrorMessageL(KErrNotReady, KErrorUninitialized); + return; + } + CEngineVideoRecording::TZoomMode zoomMode = (CEngineVideoRecording::TZoomMode)aData[0]; HTI_LOG_FORMAT("Set zoom mode: %d", zoomMode); TRAPD(err, iVideoRecordingEngine->SetZoomModeL(zoomMode)); @@ -515,7 +597,7 @@ { HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroInitComplete" ); HTI_LOG_FORMAT("aError = %d", aError); - iError = aError; + iError = aError; iWaiter->AsyncStop(); HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroInitComplete" ); }