Bug fix - invalid previous state on interrupted callback 92/105992/1 accepted/tizen/common/20161220.191009 accepted/tizen/ivi/20161220.223817 accepted/tizen/mobile/20161220.223647 accepted/tizen/tv/20161220.223721 accepted/tizen/unified/20170309.033112 accepted/tizen/wearable/20161220.223750 submit/tizen/20161220.104958 submit/tizen_unified/20170308.100408
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 20 Dec 2016 01:58:51 +0000 (10:58 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 20 Dec 2016 01:58:51 +0000 (10:58 +0900)
[Version] 0.2.63
[Profile] Common
[Issue Type] Bug fix
[Dependency module] N/A
[Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-3.0-mobile_20161215.3]

Change-Id: I4193a7e52c3f0f2b1b4e58610dd5e3990f9d340a
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
legacy/src/legacy_camera.c
packaging/mmsvc-camera.spec

index 4881c09..0c942ff 100644 (file)
@@ -313,6 +313,7 @@ static int __mm_camera_message_callback(int message, void *param, void *user_dat
        {
                int emit_value = 0;
                int device_state = -1;
+               static int interrupt_state = -1;
 
                if (message == MM_MESSAGE_CAMCORDER_STATE_CHANGED &&
                    (m->state.previous < MM_CAMCORDER_STATE_NONE ||
@@ -362,6 +363,12 @@ static int __mm_camera_message_callback(int message, void *param, void *user_dat
                previous_state = handle->state;
                handle->state = __camera_state_convert(m->state.current);
 
+               if (message != MM_MESSAGE_CAMCORDER_STATE_CHANGED &&
+                               interrupt_state == -1) {
+                               interrupt_state = previous_state;
+                               LOGD("interrupt state %d", interrupt_state);
+               }
+
                if (previous_state != handle->state && handle->user_cb[_CAMERA_EVENT_TYPE_STATE_CHANGE]) {
                        ((camera_state_changed_cb)handle->user_cb[_CAMERA_EVENT_TYPE_STATE_CHANGE])(previous_state,
                                handle->state, policy, handle->user_data[_CAMERA_EVENT_TYPE_STATE_CHANGE]);
@@ -393,10 +400,13 @@ static int __mm_camera_message_callback(int message, void *param, void *user_dat
                if (policy != CAMERA_POLICY_NONE && m->state.current == MM_CAMCORDER_STATE_NULL) {
                        if (handle->user_cb[_CAMERA_EVENT_TYPE_INTERRUPTED]) {
                                ((camera_interrupted_cb)handle->user_cb[_CAMERA_EVENT_TYPE_INTERRUPTED])(policy,
-                                       previous_state, handle->state, handle->user_data[_CAMERA_EVENT_TYPE_INTERRUPTED]);
+                                       interrupt_state, handle->state, handle->user_data[_CAMERA_EVENT_TYPE_INTERRUPTED]);
                        } else {
                                LOGW("_CAMERA_EVENT_TYPE_INTERRUPTED cb is NULL");
                        }
+
+                       /* initialize interrupt state */
+                       interrupt_state = -1;
                }
                break;
        }
index 1923c84..760c9ce 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-camera
 Summary:    A Camera module for muse server
-Version:    0.2.62
+Version:    0.2.63
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0