Update camera_change_device() 74/317974/3 accepted/tizen_7.0_unified tizen_7.0 accepted/tizen/7.0/unified/20250123.020352
authorJeongmo Yang <jm80.yang@samsung.com>
Fri, 10 Jan 2025 07:52:12 +0000 (16:52 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 14 Jan 2025 05:47:33 +0000 (14:47 +0900)
- Do not reset callback if not CREATED state.
- Minor change
 : camera_test - Add new menu for switching device.

Change-Id: I34e788c9104241bd9fb0527c44a598d150f3fc4c
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
src/camera.c
test/camera_test.c

index a5972e0b0c3e39f581ebac235be64964196f9586..934b5a837cfffa79738288baa1330c6815c3d3c6 100644 (file)
@@ -2862,15 +2862,23 @@ int camera_change_device(camera_h camera, camera_device_e device)
        int ret = CAMERA_ERROR_NONE;
        muse_camera_api_e api = MUSE_CAMERA_API_CHANGE_DEVICE;
        camera_cli_s *pc = (camera_cli_s *)camera;
+       camera_state_e current_state = CAMERA_STATE_NONE;
        camera_msg_param param;
 
        CAMERA_CHECK_HANDLE_RETURN_VAL(pc, CAMERA_ERROR_INVALID_PARAMETER);
 
+       ret = camera_get_state(camera, &current_state);
+       if (ret != CAMERA_ERROR_NONE) {
+               CAM_LOG_ERROR("failed to get current state 0x%x", ret);
+               return ret;
+       }
+
        CAMERA_MSG_PARAM_SET(param, INT, device);
 
        _camera_msg_send_param1(api, pc->cb_info, &ret, &param, CAMERA_CB_TIMEOUT);
 
-       if (ret == CAMERA_ERROR_NONE) {
+       if (ret == CAMERA_ERROR_NONE &&
+               current_state == CAMERA_STATE_CREATED) {
                /* reset callback and user data */
                for (i = 0 ; i < MUSE_CAMERA_EVENT_TYPE_NUM ; i++) {
                        pc->cb_info->user_cb[i] = NULL;
index 162772972a768bc7c95183642a5732f3e279087c..de36be3c554f5b89065a58bc271e21954b50b971 100644 (file)
@@ -905,6 +905,7 @@ void print_menu()
                g_print("\t   '6' Set/Unset extra preview callback\n");
                g_print("\t   '7' Set/Unset media packet preview callback\n");
                g_print("\t   '8' Set/Unset media packet preview internal callback\n");
+               g_print("\t   '9' Switch device\n");
                g_print("\t   'b' back\n");
                g_print("\t=======================================\n");
                break;
@@ -998,6 +999,7 @@ static void main_menu(gchar buf)
        int err = 0;
        int interval = 0;
        int count = 0;
+       int device = 0;
 
        switch (buf) {
        case '1': /* Capture */
@@ -1059,6 +1061,14 @@ static void main_menu(gchar buf)
                err = _camera_set_preview_cb(PREVIEW_CB_TYPE_MEDIA_PACKET_INTERNAL);
                g_print("\tresult[0x%x]\n\n", err);
                break;
+       case '9': /* Switch device */
+               g_print("\n\tswitch device: ");
+               err = scanf("%d", &device);
+               flush_stdin();
+
+               err = camera_change_device(hcamcorder->camera, device);
+               g_print("\tresult[0x%x]\n\n", err);
+               break;
        case 'b': /* back */
                __release_media_bridge();