1. Fix BS when set audio-disable in specific condition
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 4 Sep 2012 07:34:28 +0000 (16:34 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 4 Sep 2012 07:34:28 +0000 (16:34 +0900)
2. Modify timing to set camera state

packaging/libmm-camcorder.spec
src/include/mm_camcorder_internal.h
src/mm_camcorder_attribute.c
src/mm_camcorder_internal.c

index 98a4995..5b17098 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.6.11
+Version:    0.6.13
 Release:    0
 Group:      libs
 License:    Apache-2.0
index b5719eb..07cedeb 100644 (file)
@@ -133,17 +133,34 @@ extern "C" {
                _mmcam_dbg_err("The element is existed. element_id=[%d], name=[%s]", eid, name); \
                gst_object_unref(sub_context->element[eid].gst); \
        } \
-       sub_context->element[eid].id = eid; \
        sub_context->element[eid].gst = gst_element_factory_make(name, nickname); \
        if (sub_context->element[eid].gst == NULL) { \
                _mmcam_dbg_err("Element creation fail. element_id=[%d], name=[%s]", eid, name); \
                err = MM_ERROR_CAMCORDER_RESOURCE_CREATION; \
                goto pipeline_creation_error; \
        } else { \
+               _mmcam_dbg_log("Element creation done. element_id=[%d], name=[%s]", eid, name); \
+               sub_context->element[eid].id = eid; \
                g_object_weak_ref(G_OBJECT(sub_context->element[eid].gst), (GWeakNotify)_mmcamcorder_element_release_noti, sub_context); \
+               err = MM_ERROR_NONE; \
        } \
        elist = g_list_append(elist, &(sub_context->element[eid]));
 
+#define _MMCAMCORDER_ELEMENT_MAKE_IGNORE_ERROR(sub_context, eid, name /*char* */, nickname /*char* */, elist) \
+       if (sub_context->element[eid].gst != NULL) { \
+               _mmcam_dbg_err("The element is existed. element_id=[%d], name=[%s]", eid, name); \
+               gst_object_unref(sub_context->element[eid].gst); \
+       } \
+       sub_context->element[eid].gst = gst_element_factory_make(name, nickname); \
+       if (sub_context->element[eid].gst == NULL) { \
+               _mmcam_dbg_err("Element creation fail. element_id=[%d], name=[%s]", eid, name); \
+       } else { \
+               _mmcam_dbg_log("Element creation done. element_id=[%d], name=[%s]", eid, name); \
+               sub_context->element[eid].id = eid; \
+               g_object_weak_ref(G_OBJECT(sub_context->element[eid].gst), (GWeakNotify)_mmcamcorder_element_release_noti, sub_context); \
+               elist = g_list_append(elist, &(sub_context->element[eid])); \
+       }
+
 #define _MMCAMCORDER_ENCODEBIN_ELMGET(sub_context, eid, name /*char* */, err) \
        if (sub_context->element[eid].gst != NULL) { \
                _mmcam_dbg_err("The element is existed. element_id=[%d], name=[%s]", eid, name); \
index e31f451..4872e4e 100644 (file)
@@ -3192,7 +3192,7 @@ bool _mmcamcorder_commit_audio_disable(MMHandleType handle, int attr_idx, const
 
        current_state = _mmcamcorder_get_state(handle);
        if (current_state > MM_CAMCORDER_STATE_PREPARE) {
-               _mmcam_dbg_warn("Can NOT Disable AUDIO. invalid state %s", current_state);
+               _mmcam_dbg_warn("Can NOT Disable AUDIO. invalid state %d", current_state);
                return FALSE;
        } else {
                _mmcam_dbg_log("Disable AUDIO when Recording");
index 5667971..6300f8b 100644 (file)
@@ -616,6 +616,18 @@ int _mmcamcorder_realize(MMHandleType handle)
                goto _ERR_CAMCORDER_CMD_PRECON_AFTER_LOCK;
        }
 
+       /* set camera state to vconf key */
+       if (hcamcorder->type != MM_CAMCORDER_MODE_AUDIO) {
+               int vconf_camera_state = 0;
+
+               /* get current camera state of vconf key */
+               vconf_get_int(VCONFKEY_CAMERA_STATE, &vconf_camera_state);
+               vconf_set_int(VCONFKEY_CAMERA_STATE, VCONFKEY_CAMERA_STATE_OPEN);
+
+               _mmcam_dbg_log("VCONFKEY_CAMERA_STATE prev %d -> cur %d",
+                              vconf_camera_state, VCONFKEY_CAMERA_STATE_OPEN);
+       }
+
        /* Set async state */
        ret = _mmcamcorder_set_async_state(handle, state_TO);
        if (ret < 0) {
@@ -748,18 +760,6 @@ int _mmcamcorder_realize(MMHandleType handle)
 
        _mmcamcorder_set_state(handle, state_TO);
 
-       /* set camera state to vconf key */
-       if (hcamcorder->type != MM_CAMCORDER_MODE_AUDIO) {
-               int vconf_camera_state = 0;
-
-               /* get current camera state of vconf key */
-               vconf_get_int(VCONFKEY_CAMERA_STATE, &vconf_camera_state);
-               vconf_set_int(VCONFKEY_CAMERA_STATE, VCONFKEY_CAMERA_STATE_OPEN);
-
-               _mmcam_dbg_log("VCONFKEY_CAMERA_STATE prev %d -> cur %d",
-                              vconf_camera_state, VCONFKEY_CAMERA_STATE_OPEN);
-       }
-
        _MMCAMCORDER_UNLOCK_CMD(hcamcorder);
 
        return MM_ERROR_NONE;
@@ -775,6 +775,18 @@ _ERR_CAMCORDER_CMD_PRECON:
        _mmcam_dbg_err("Realize fail (type %d, state %d, ret %x)",
                       hcamcorder->type, state, ret);
 
+       /* set camera state to vconf key */
+       if (hcamcorder->type != MM_CAMCORDER_MODE_AUDIO) {
+               int vconf_camera_state = 0;
+
+               /* get current camera state of vconf key */
+               vconf_get_int(VCONFKEY_CAMERA_STATE, &vconf_camera_state);
+               vconf_set_int(VCONFKEY_CAMERA_STATE, VCONFKEY_CAMERA_STATE_NULL);
+
+               _mmcam_dbg_log("VCONFKEY_CAMERA_STATE prev %d -> cur %d",
+                              vconf_camera_state, VCONFKEY_CAMERA_STATE_NULL);
+       }
+
        return ret;
 }