It gives chance to doing immediate action on resuming from echomem.
Change-Id: I566a2dcee22c90a02af0c10ee394f1fa4a58a894
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
return 0;
}
-static int power_resume_from_echomem_callback(void *data)
+static int power_resume_from_echomem_pre_callback(void *data)
+{
+ // do nothing
+
+ return 0;
+}
+
+static int power_resume_from_echomem_post_callback(void *data)
{
system_wakeup_flag = true;
if (check_wakeup_src() == EVENT_DEVICE)
register_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
register_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
register_notifier(DEVICE_NOTIFIER_LCD_AUTOBRT_SENSING, display_auto_brightness_sensing);
- register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
register_notifier(DEVICE_NOTIFIER_POWEROFF_TRIGGERED, poweroff_triggered_callback);
init_save_userlock();
unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated);
unregister_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
unregister_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
- unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
break;
}
return 0;
}
-static int power_resume_from_echomem_callback(void *data)
+static int power_resume_from_echomem_pre_callback(void *data)
+{
+ enum hal_device_power_transition_reason reason = power_get_wakeup_reason();
+
+ /** proactive display on */
+ switch (reason) {
+ case HAL_DEVICE_POWER_TRANSITION_REASON_POWER_KEY:
+ case HAL_DEVICE_POWER_TRANSITION_REASON_TOUCH_SCREEN:
+ dpms_set_state(1);
+ break;
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+static int power_resume_from_echomem_post_callback(void *data)
{
system_wakeup_flag = true;
register_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
register_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
register_notifier(DEVICE_NOTIFIER_LCD_AUTOBRT_SENSING, display_auto_brightness_sensing);
- register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
register_notifier(DEVICE_NOTIFIER_POWEROFF_TRIGGERED, poweroff_triggered_callback);
init_save_userlock();
unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated);
unregister_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
unregister_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
- unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
break;
}
return 0;
}
-static int power_resume_from_echomem_callback(void *data)
+static int power_resume_from_echomem_pre_callback(void *data)
+{
+ // do nothing
+
+ return 0;
+}
+
+static int power_resume_from_echomem_post_callback(void *data)
{
system_wakeup_flag = true;
if (check_wakeup_src() == EVENT_DEVICE)
register_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
register_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
register_notifier(DEVICE_NOTIFIER_LCD_AUTOBRT_SENSING, display_auto_brightness_sensing);
- register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
register_notifier(DEVICE_NOTIFIER_POWEROFF_TRIGGERED, poweroff_triggered_callback);
init_save_userlock();
unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated);
unregister_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
unregister_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
- unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
break;
}
return 0;
}
-static int power_resume_from_echomem_callback(void *data)
+static int power_resume_from_echomem_pre_callback(void *data)
+{
+ // do nothing
+
+ return 0;
+}
+
+static int power_resume_from_echomem_post_callback(void *data)
{
system_wakeup_flag = true;
if (check_wakeup_src() == EVENT_DEVICE)
register_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
register_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
register_notifier(DEVICE_NOTIFIER_LCD_AUTOBRT_SENSING, display_auto_brightness_sensing);
- register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ register_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
register_notifier(DEVICE_NOTIFIER_POWEROFF_TRIGGERED, poweroff_triggered_callback);
init_save_userlock();
unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated);
unregister_notifier(DEVICE_NOTIFIER_BATTERY_HEALTH, battery_health_changed);
unregister_notifier(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, display_brightness_changed);
- unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, power_resume_from_echomem_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, power_resume_from_echomem_pre_callback);
+ unregister_notifier(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, power_resume_from_echomem_post_callback);
break;
}
// resume
update_wakeup_reason();
+ device_notify(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE, NULL);
+
/*
* FIXME: If the wakeup reason lingers after wakeup, a transition triggered from other
* than the above line would take the lingering wakeup reason as a transition reason,
static void resume_echo_mem(void)
{
- device_notify(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM, NULL);
+ device_notify(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST, NULL);
}
static void suspend_autosleep(void)
NOTIFY_STR(DEVICE_NOTIFIER_DISPLAY_AMBIENT_CONDITION),
NOTIFY_STR(DEVICE_NOTIFIER_DISPLAY_AMBIENT_STATE),
NOTIFY_STR(DEVICE_NOTIFIER_DISPLAY_LOCK),
- NOTIFY_STR(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM),
+ NOTIFY_STR(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE),
+ NOTIFY_STR(DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST),
NOTIFY_STR(DEVICE_NOTIFIER_POWEROFF_TRIGGERED),
NOTIFY_STR(DEVICE_NOTIFIER_POWEROFF),
NOTIFY_STR(DEVICE_NOTIFIER_APPLICATION_BACKGROUND),
DEVICE_NOTIFIER_DISPLAY_AMBIENT_CONDITION,
DEVICE_NOTIFIER_DISPLAY_AMBIENT_STATE,
DEVICE_NOTIFIER_DISPLAY_LOCK,
- DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM,
+ DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_PRE,
+ DEVICE_NOTIFIER_POWER_RESUME_FROM_ECHO_MEM_POST,
DEVICE_NOTIFIER_POWEROFF_TRIGGERED,
DEVICE_NOTIFIER_POWEROFF,
DEVICE_NOTIFIER_APPLICATION_BACKGROUND,