Change dispatcher interface for display setting 18/217318/3 accepted/tizen/unified/20191112.125145 submit/tizen/20191112.051613
authorJeongmo Yang <jm80.yang@samsung.com>
Fri, 8 Nov 2019 09:40:45 +0000 (18:40 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 12 Nov 2019 04:30:27 +0000 (13:30 +0900)
[Version] 0.3.25
[Profile] Common
[Issue Type] Update

Change-Id: Id0110f89854c09ea03fb8916470abbbefa49d4d3
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
legacy/include/legacy_camera.h
muse/include/muse_camera.h
muse/include/muse_camera_internal.h
muse/src/muse_camera_dispatcher.c
packaging/mmsvc-camera.spec

index db3a3b9..c7d5a07 100644 (file)
@@ -270,6 +270,14 @@ typedef struct {
 } camera_preview_data_s;
 
 /**
+ * @brief The structure type to display information.
+ */
+typedef struct {
+       int surface_id;
+       MMRectType rect;
+} camera_window_info_s;
+
+/**
  * @brief The Camera handle.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @see legacy_recorder_create_videorecorder()
index 4ebdc14..a50c299 100644 (file)
@@ -28,6 +28,7 @@ extern "C" {
 
 #include <stdbool.h>
 #include <tbm_bufmgr.h>
+#include <mm_types.h>
 
 
 /**
@@ -342,6 +343,15 @@ typedef enum {
 } muse_camera_error_e;
 
 /**
+ * @brief The structure type for muse camera errors.
+ */
+typedef struct {
+       int type;
+       int parent_id;
+       MMRectType window_rect;
+} muse_camera_display_info_s;
+
+/**
  * @brief Definition for the callback event id.
  */
 #define MUSE_CAMERA_CB_EVENT   MUSE_CAMERA_API_MAX + 1 /* 148 */
index 484d140..cb087dd 100644 (file)
@@ -64,7 +64,7 @@ typedef struct {
        GMutex preview_cb_lock;
        GCond preview_cb_cond;
        guint preview_cb_flag;
-       gint parent_id;
+       camera_window_info_s window_info;
        GThread *task_thread;
        GMutex task_lock;
        GCond task_cond;
index e488775..8bc18ad 100644 (file)
@@ -2150,11 +2150,10 @@ int camera_dispatcher_stop_focusing(muse_module_h module)
 int camera_dispatcher_set_display(muse_module_h module)
 {
        int ret = CAMERA_ERROR_NONE;
-       int parent_id = 0;
        muse_camera_handle_s *muse_camera = NULL;
        muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY;
        muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
-       camera_display_type_e type = CAMERA_DISPLAY_TYPE_NONE;
+       muse_camera_display_info_s dp_info = {0, };
        camera_h camera = NULL;;
 
        muse_camera = (muse_camera_handle_s *)muse_server_ipc_get_handle(module);
@@ -2163,37 +2162,39 @@ int camera_dispatcher_set_display(muse_module_h module)
 
        camera = muse_camera->camera_handle;
 
-       muse_camera_msg_get(type, muse_server_module_get_msg(module));
+       muse_core_msg_deserialize("dp_info", muse_server_module_get_msg(module),
+               NULL, NULL, MUSE_TYPE_ARRAY, (void *)&dp_info);
 
-       LOGD("type %d", type);
+       LOGD("type %d, parent id %d (%d,%d,%dx%d)",
+               dp_info.type, dp_info.parent_id,
+               dp_info.window_rect.x, dp_info.window_rect.y,
+               dp_info.window_rect.width, dp_info.window_rect.height);
 
-       if (type == CAMERA_DISPLAY_TYPE_OVERLAY) {
-               muse_camera_msg_get(parent_id, muse_server_module_get_msg(module));
+       /* set window info */
+       muse_camera->window_info.surface_id = dp_info.parent_id;
+       muse_camera->window_info.rect = dp_info.window_rect;
 
-               LOGD("wayland global surface id : %d", parent_id);
-
-               muse_camera->parent_id = parent_id;
-
-               ret = legacy_camera_set_display(muse_camera->camera_handle, type, (void *)&muse_camera->parent_id);
-
-               muse_camera_msg_return(api, class, ret, module);
-       } else {
+       switch (dp_info.type) {
+       case CAMERA_DISPLAY_TYPE_OVERLAY:
+               LOGD("wayland global surface id : %d", muse_camera->window_info.surface_id);
+               ret = legacy_camera_set_display(muse_camera->camera_handle,
+                       CAMERA_DISPLAY_TYPE_OVERLAY, (void *)&muse_camera->window_info);
+               break;
+       case CAMERA_DISPLAY_TYPE_EVAS:
+               ret = legacy_camera_set_preview_cb(muse_camera->camera_handle,
+                       (camera_preview_cb)_camera_dispatcher_preview_cb, (void *)module);
+               if (ret == CAMERA_ERROR_NONE)
+                       SET_PREVIEW_CB_TYPE(muse_camera, PREVIEW_CB_TYPE_EVAS);
+               /* fall through */
+       default:
                LOGD("NOT overlay type. set NONE type.");
-
-               if (type == CAMERA_DISPLAY_TYPE_EVAS) {
-                       ret = legacy_camera_set_preview_cb(muse_camera->camera_handle,
-                               (camera_preview_cb)_camera_dispatcher_preview_cb,
-                               (void *)module);
-
-                       if (ret == CAMERA_ERROR_NONE)
-                               SET_PREVIEW_CB_TYPE(muse_camera, PREVIEW_CB_TYPE_EVAS);
-               }
-
-               ret = legacy_camera_set_display(muse_camera->camera_handle, CAMERA_DISPLAY_TYPE_NONE, NULL);
-
-               muse_camera_msg_return(api, class, ret, module);
+               ret = legacy_camera_set_display(muse_camera->camera_handle,
+                       CAMERA_DISPLAY_TYPE_NONE, NULL);
+               break;
        }
 
+       muse_camera_msg_return(api, class, ret, module);
+
        return MUSE_CAMERA_ERROR_NONE;
 }
 
index f8744c3..2f1e4c8 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-camera
 Summary:    A Camera module for muse server
-Version:    0.3.24
+Version:    0.3.25
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0