+}
+
+static void remove_state_transition(void)
+{
+ if (state_transition_timer_id) {
+ g_source_remove(state_transition_timer_id);
+ state_transition_timer_id = 0;
+ }
+}
+
+static gboolean state_transition_timeout_handler(void *data)
+{
+ const char *state_name = NULL;
+ display_plugin_state_get_name(get_pm_cur_state(), &state_name);
+ _I("Time out state %s", state_name);
+
+ remove_state_transition();
+
+ display_plugin_state_do_default_trans(get_pm_cur_state(), EVENT_TIMEOUT);
+ return G_SOURCE_REMOVE;
+}
+
+bool display_state_transition_is_there_state_transition_timer(void)
+{
+ return (state_transition_timer_id != 0);
+}
+
+int display_state_transition_reset_state_transition_timeout(int timeout)
+{
+ bool timeout_enable;
+ if (!display_plugin_config_get_timeout_enable(&timeout_enable) && (!timeout_enable))
+ return -EPERM;
+
+ if ((get_pm_cur_state() == S_LCDOFF)
+ && (is_emulator() == true || timeout_sleep_support == false))
+ return -EPERM;
+
+ _I("Reset timeout(%d ms) pm_cur_state(%d).", timeout, get_pm_cur_state());
+ remove_state_transition();
+
+ if (trans_table[get_pm_cur_state()][EVENT_TIMEOUT] == get_pm_cur_state())
+ return -EPERM;
+
+ if (timeout > 0)
+ state_transition_timer_id = g_timeout_add(timeout,
+ state_transition_timeout_handler, NULL);
+ else if (timeout == 0)
+ display_plugin_state_do_default_trans(get_pm_cur_state(), EVENT_TIMEOUT);
+
+ return 0;