diff -r 42ba2d16bf40 -r 01e205c615b9 camerauis/cameraxui/cxengine/src/cxevideocapturecontrolsymbian.cpp --- a/camerauis/cameraxui/cxengine/src/cxevideocapturecontrolsymbian.cpp Wed Aug 18 09:37:18 2010 +0300 +++ b/camerauis/cameraxui/cxengine/src/cxevideocapturecontrolsymbian.cpp Thu Sep 02 20:14:28 2010 +0300 @@ -470,7 +470,9 @@ // Try asynchronous stopping first. mVideoRecorder->stop(true); // No error from asynchronous stop -> wait for stop event - setState(Stopping); + if (state() != Ready) { + setState(Stopping); + } } catch (const std::exception &e) { CX_DEBUG(("CxeVideoCaptureControlSymbian - async stop failed, try sync..")); try { @@ -706,9 +708,9 @@ addState(new CxeState(Initialized, "Initialized", Preparing | Idle)); addState(new CxeState(Preparing, "Preparing", Ready | Idle)); addState(new CxeState(Ready, "Ready", Recording | PlayingStartSound | Preparing | Idle)); - addState(new CxeState(Recording, "Recording", Recording | Paused | Stopping | Idle)); + addState(new CxeState(Recording, "Recording", Recording | Paused | Stopping | Idle | Ready)); addState(new CxeState(Paused, "Paused", Recording | Stopping | PlayingStartSound | Idle)); - addState(new CxeState(Stopping, "Stopping", Initialized | Idle)); + addState(new CxeState(Stopping, "Stopping", Initialized | Idle | Ready)); addState(new CxeState(PlayingStartSound, "PlayingStartSound", Recording | Idle)); setInitialState(Idle);