QCamera2: Syncs snapshot done state events

- Snapshot done events have to be processed
  in synchronous fashion. If this is not the
  case, then a race condition can occur between
  camera client which receives a data callback
  and tries to trigger another capture and the
  state machine, which has yet to begin processing
  the queued snapshot done event.

Change-Id: Id0acd7e58fa360413ab4f76605b821903ba24277
diff --git a/QCamera2/HAL/QCameraStateMachine.cpp b/QCamera2/HAL/QCameraStateMachine.cpp
index 3fc050d..075e93e 100644
--- a/QCamera2/HAL/QCameraStateMachine.cpp
+++ b/QCamera2/HAL/QCameraStateMachine.cpp
@@ -1506,6 +1506,10 @@
         {
             rc = m_parent->cancelPicture();
             m_state = QCAMERA_SM_STATE_PREVIEW_STOPPED;
+            result.status = rc;
+            result.request_api = evt;
+            result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+            m_parent->signalEvtResult(&result);
         }
         break;
     case QCAMERA_SM_EVT_THERMAL_NOTIFY:
@@ -2100,6 +2104,10 @@
         {
             rc = m_parent->cancelLiveSnapshot();
             m_state = QCAMERA_SM_STATE_RECORDING;
+            result.status = rc;
+            result.request_api = evt;
+            result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+            m_parent->signalEvtResult(&result);
         }
         break;
     case QCAMERA_SM_EVT_THERMAL_NOTIFY:
@@ -2424,6 +2432,10 @@
                 rc = m_parent->cancelLiveSnapshot();
             }
             m_state = QCAMERA_SM_STATE_PREVIEWING;
+            result.status = rc;
+            result.request_api = evt;
+            result.result_type = QCAMERA_API_RESULT_TYPE_DEF;
+            m_parent->signalEvtResult(&result);
         }
         break;
     case QCAMERA_SM_EVT_THERMAL_NOTIFY: