init direction means the display direction of degree 0.
It is needed to know physical display state by app.
When deviced boot, it parses the conf file "/etc/deviced/display.conf"
and it saves the initial display is horizontal or vertical.
changed dbus method:
dbus_getrotationangle
path: "/Org/Tizen/System/DeviceD/Display"
interace: "org.tizen.system.deviced.display"
member: "GetRotationAngle"
paremeter: "(i)", display index to get rotation angle.
return: "(iii)", 0 on success, negative on error.
enum display rotation angle to get.
enum display initial direction.
added configuration property:
DisplayInitDirection : "horizontal" or "vertical"
Change-Id: I9a45d06b712a04d79e8614bac5880d4be6fe4fd3
Signed-off-by: TaeminYeom <taemin.yeom@samsung.com>
# Default: yes
# DisplayOnUsbConnChanged=(yes or no)
+# Display direction is horizontal or vertical when there is no rotation.
+# Default: horizontal
+# DisplayInitDirection=(horizontal or vertical)
+
LCDAlwaysOn=no
TimeoutEnable=yes
SleepSupport=no
.timeout_enable = true,
.input_support = true,
.lockcheck_timeout = 600,
+ .display_init_direction = DISPLAY_INIT_DIRECTION_HORIZONTAL,
.aod_enter_level = 40,
.aod_tsp = true,
.touch_wakeup = false,
if (display_conf.input_support)
if (CHECK_OPS(keyfilter_ops, init))
keyfilter_ops->init();
+
+ set_display_init_direction(display_conf.display_init_direction);
}
}
.timeout_enable = true,
.input_support = true,
.lockcheck_timeout = 600,
+ .display_init_direction = DISPLAY_INIT_DIRECTION_HORIZONTAL,
.aod_enter_level = 40,
.aod_tsp = true,
.touch_wakeup = false,
if (display_conf.input_support)
if (CHECK_OPS(keyfilter_ops, init))
keyfilter_ops->init();
+
+ set_display_init_direction(display_conf.display_init_direction);
}
}
.continuous_sampling = CONTINUOUS_SAMPLING,
.timeout_enable = true,
.input_support = true,
+ .display_init_direction = DISPLAY_INIT_DIRECTION_HORIZONTAL,
.lockcheck_timeout = 600,
.aod_enter_level = 40,
.aod_tsp = true,
if (display_conf.input_support)
if (CHECK_OPS(keyfilter_ops, init))
keyfilter_ops->init();
+
+ set_display_init_direction(display_conf.display_init_direction);
}
}
.timeout_enable = true,
.input_support = true,
.lockcheck_timeout = 600,
+ .display_init_direction = DISPLAY_INIT_DIRECTION_HORIZONTAL,
.pmlock_check = pmlock_check,
.aod_enter_level = 40,
.aod_tsp = true,
if (display_conf.input_support)
if (CHECK_OPS(keyfilter_ops, init))
keyfilter_ops->init();
+
+ set_display_init_direction(display_conf.display_init_direction);
}
}
int accel_sensor_on;
int continuous_sampling;
int lockcheck_timeout;
+ int display_init_direction;
/* Define pmlock checker.
* Return id of the lock checker.
int ret;
int display_index;
enum hal_device_display_rotation_angle angle;
+ enum display_init_direction_e init_direction;
g_variant_get(param, "(i)", &display_index);
ret = hal_device_display_get_rotation_angle(display_index, &angle);
if (ret < 0)
angle = HAL_DEVICE_DISPLAY_ROTATION_ANGLE_UNKNOWN;
- return g_variant_new("(ii)", ret, angle);
+ init_direction = get_display_init_direction();
+
+ return g_variant_new("(iii)", ret, angle, init_direction);
}
static GVariant *dbus_setrotationangle(GDBusConnection *conn,
{ "GetBrightnessInfo", NULL, "ii", dbus_getbrightnessinfo},
{ "SetWhiteBalance", "ii", "i", dbus_setwhitebalance},
{ "GetWhiteBalance", "i", "i", dbus_getwhitebalance},
- { "GetRotationAngle", "i", "ii", dbus_getrotationangle},
+ { "GetRotationAngle", "i", "iii", dbus_getrotationangle},
{ "SetRotationAngle", "iii", "i", dbus_setrotationangle}
/* Add methods here */
};
static int pm_cur_state;
static int pm_old_state;
static unsigned int pm_status_flag;
+static enum display_init_direction_e g_display_init_direction;
inline int get_pm_cur_state(void)
{
pm_status_flag &= ~status_flag;
}
+inline enum display_init_direction_e get_display_init_direction(void)
+{
+ return g_display_init_direction;
+}
+
+inline void set_display_init_direction(enum display_init_direction_e display_init_direction)
+{
+ g_display_init_direction = display_init_direction;
+}
+
void lcd_direct_control(enum dpms_state state, int flags)
{
const struct device_ops *ops = NULL;
_D("TSP control at is %d at aod", c->aod_tsp);
} else if (MATCH(result->name, "DisplayOnUsbConnChanged")) {
c->display_on_usb_conn_changed = (MATCH(result->value, "yes") ? true : false);
+ } else if (MATCH(result->name, "DisplayInitDirection")) {
+ c->display_init_direction = (MATCH(result->value, "vertical") ? \
+ DISPLAY_INIT_DIRECTION_VERTICAL : DISPLAY_INIT_DIRECTION_HORIZONTAL);
}
return 0;
unsigned int get_pm_status_flag(void);
void set_pm_status_flag(unsigned int status_flag);
void clear_pm_status_flag(unsigned int status_flag);
+enum display_init_direction_e get_display_init_direction(void);
+void set_display_init_direction(enum display_init_direction_e display_init_direction);
int display_load_config(struct parse_result *result, void *user_data);
enum brightness_request_e {
BR_MAX,
};
+enum display_init_direction_e {
+ DISPLAY_INIT_DIRECTION_HORIZONTAL,
+ DISPLAY_INIT_DIRECTION_VERTICAL,
+};
+
/* request for brightness that managed internally.
* BR_HOLD_BRIGHTNESS and BR_SET_BRIGHTNESS does not use this implicit brightness
* for request, but explicitly request for a brightness value */