Update camera_change_device() 55/322255/2 accepted/tizen_unified accepted/tizen_unified_x tizen accepted/tizen/unified/20250610.081803 accepted/tizen/unified/x/20250610.082530
authorJeongmo Yang <jm80.yang@samsung.com>
Fri, 10 Jan 2025 07:52:12 +0000 (16:52 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 10 Apr 2025 10:06:54 +0000 (19:06 +0900)
- Do not reset callback if not CREATED state.
- Minor change
 : camera_test - Add new menu for changing device while previewing.

[Version] 1.2.5
[Issue Type] Update

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

index e8b3bd089d78fec3c61964717294bd6399ab88b3..cb0f59ac6c870329f15415fd910e4dd702b769e9 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-camera
 Summary:    A Camera API
-Version:    1.2.4
+Version:    1.2.5
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 715ac9b0e9208cb142247a2963b8f0e5d80aaeb1..e5ec4556fa619c9616a2309439283779c2339e3d 100644 (file)
@@ -2858,15 +2858,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 f791edce65ae8aef866bcde5f460267a25e76eda..b6a5105edb89683adb506ed630f6973a8d8dd3f1 100644 (file)
@@ -907,6 +907,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' Change device while previewing\n");
                g_print("\t   'b' back\n");
                g_print("\t=======================================\n");
                break;
@@ -1006,6 +1007,7 @@ static void main_menu(gchar buf)
        int err = 0;
        int interval = 0;
        int count = 0;
+       int device = 0;
 
        switch (buf) {
        case '1': /* Capture */
@@ -1067,6 +1069,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':
+               g_print("\n\tChange device while previewing: ");
+               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();