--- 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" );
}