From 226446983c95646a1f06cddfda1e908576b712f3 Mon Sep 17 00:00:00 2001 From: TaeminYeom Date: Fri, 23 Dec 2022 16:04:47 +0900 Subject: [PATCH] display: change to use libsensor from capi-system-sensor To prevent circular dependency in building, change to use libsensor in display rotation API circular dependency : alarm-manager->capi-system-device->capi-system-sensor-> context-sensor-recorder->context-common->alarm-manager Change-Id: Ie0827413e0f28c325eb9a56e322657a18aacef03 Signed-off-by: TaeminYeom --- CMakeLists.txt | 1 - packaging/capi-system-device.spec | 1 - src/display.c | 55 ++++++++++++++++++--------------------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0631b8d..8f6868e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,6 @@ SET(PKG_MODULES vconf capi-base-common capi-system-info - capi-system-sensor sensor gio-2.0 tracker diff --git a/packaging/capi-system-device.spec b/packaging/capi-system-device.spec index 3711d7a..56ecf3e 100644 --- a/packaging/capi-system-device.spec +++ b/packaging/capi-system-device.spec @@ -9,7 +9,6 @@ Source1: capi-system-device.manifest BuildRequires: cmake BuildRequires: pkgconfig(capi-base-common) BuildRequires: pkgconfig(capi-system-info) -BuildRequires: pkgconfig(capi-system-sensor) BuildRequires: pkgconfig(sensor) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(vconf) diff --git a/src/display.c b/src/display.c index 3044ca9..2f434f6 100644 --- a/src/display.c +++ b/src/display.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include @@ -52,6 +51,8 @@ #define DISPLAY_WHITE_BALANCE_OFFSET_MAX 2047 #define DISPLAY_WHITE_BALANCE_OFFSET_MIN 0 +#define SENSOR_SHIFT_TYPE 16 + static int display_cnt = -1; struct display { int normal_max; @@ -59,7 +60,7 @@ struct display { } *display_arr; static bool g_sensor_initialized; -static sensor_listener_h g_sensor_listener_handle; +static int g_sensor_listener; static int alloc_display(void) { @@ -486,37 +487,30 @@ int is_feature_display_supported(void) static int display_sensor_listener_start(void) { - sensor_h *sensor_handle = NULL; - int count, ret; - bool supported = false; + sensor_t sensor; + int ret; + bool ret_bool; if (!g_sensor_initialized) { - sensor_is_supported(AUTO_ROTATION_SENSOR, &supported); - if (!supported) { - _E("Auto rotation sensor is not supported in this device"); - return DEVICE_ERROR_OPERATION_FAILED; - } - - ret = sensor_get_sensor_list(AUTO_ROTATION_SENSOR, &sensor_handle, &count); - if (ret < 0 || !sensor_handle || count <= 0) { - _E("Failed to get sensor list"); - return DEVICE_ERROR_OPERATION_FAILED; + ret = sensord_get_default_sensor(AUTO_ROTATION_SENSOR, &sensor); + if (ret < 0) { + _E("Failed to get auto rotation sensor"); + return ret; } - ret = sensor_create_listener(sensor_handle[0], &g_sensor_listener_handle); + ret = sensord_connect(sensor); if (ret < 0) { - _E("Failed to create sensor listener"); - free(sensor_handle); - return DEVICE_ERROR_OPERATION_FAILED; + _E("Failed to connect auto rotation sensor"); + return ret; } - - free(sensor_handle); + g_sensor_listener = ret; g_sensor_initialized = true; } - ret = sensor_listener_start(g_sensor_listener_handle); - if (ret < 0) { - _E("Failed to start auto-rotation sensor"); + ret_bool = sensord_start(g_sensor_listener, 0); + if (!ret_bool) { + _E("Failed to start auto rotaton sensor"); + sensord_disconnect(g_sensor_listener); return DEVICE_ERROR_OPERATION_FAILED; } @@ -526,7 +520,7 @@ static int display_sensor_listener_start(void) static int display_sensor_listener_stop(void) { int ret; - ret = sensor_listener_stop(g_sensor_listener_handle); + ret = sensord_stop(g_sensor_listener); if (ret < 0) return ret; @@ -536,20 +530,23 @@ static int display_sensor_listener_stop(void) static int sensor_get_rotation_angle(device_display_rotation_angle_e *angle) { int ret, count, event; - sensor_event_s *events = NULL; + sensor_data_t *sensor_datas; ret = display_sensor_listener_start(); if (ret < 0) return ret; - ret = sensor_listener_read_data_list(g_sensor_listener_handle, &events, &count); + ret = sensord_get_data_list(g_sensor_listener, + AUTO_ROTATION_SENSOR << SENSOR_SHIFT_TYPE | 0x1, + &sensor_datas, + &count); if (ret < 0 || count <= 0) { _E("Failed to read the value of auto-rotation sensor"); display_sensor_listener_stop(); return DEVICE_ERROR_OPERATION_FAILED; } - event = (int)events->values[0]; + event = (int)sensor_datas->values[0]; switch (event) { case AUTO_ROTATION_DEGREE_0: *angle = DEVICE_DISPLAY_ROTATION_ANGLE_DEGREE_0; @@ -568,7 +565,7 @@ static int sensor_get_rotation_angle(device_display_rotation_angle_e *angle) break; } - free(events); + free(sensor_datas); return display_sensor_listener_stop(); } -- 2.7.4