#define HOME_TERMINATED "home_terminated"
#define ISTRUE "TRUE"
#define SYSPOPUPID_VOLUME "volume"
+#define APPID_INDICATOR "org.tizen.indicator"
+#define APPID_QUICKPANEL "org.tizen.quickpanel"
#define DEAD_TIMER_SEC 10.0
#define DEAD_TIMER_COUNT_MAX 2
static struct {
pid_t home_pid;
pid_t volume_pid;
+ pid_t indicator_pid;
+ pid_t quickpanel_pid;
int power_off;
Ecore_Timer *dead_timer;
} s_home_mgr = {
.home_pid = (pid_t)-1,
.volume_pid = (pid_t)-1,
+ .indicator_pid = (pid_t)-1,
+ .quickpanel_pid = (pid_t)-1,
.power_off = 0,
.dead_timer = NULL,
+int home_mgr_get_indicator_pid(void)
+{
+ return s_home_mgr.indicator_pid;
+}
+
+
+
+int home_mgr_get_quickpanel_pid(void)
+{
+ return s_home_mgr.quickpanel_pid;
+}
+
+
+
static void _after_launch_home(int pid)
{
if (dbus_util_send_oomadj(pid, OOM_ADJ_VALUE_HOMESCREEN) < 0){
+static void _after_launch_indicator(int pid)
+{
+ s_home_mgr.indicator_pid = pid;
+}
+
+
+
+static void _after_launch_quickpanel(int pid)
+{
+ s_home_mgr.quickpanel_pid = pid;
+}
+
+
+
static void _launch_after_home(int pid)
{
if (pid > 0) {
+void home_mgr_relaunch_indicator(void)
+{
+ process_mgr_must_launch(APPID_INDICATOR, NULL, NULL, NULL, _after_launch_indicator);
+}
+
+
+
+void home_mgr_relaunch_quickpanel(void)
+{
+ process_mgr_must_launch(APPID_QUICKPANEL, NULL, NULL, NULL, _after_launch_quickpanel);
+}
+
+
+
static int _power_off_cb(status_active_key_e key, void *data)
{
int val = status_active_get()->sysman_power_off_status;
-static Eina_Bool _launch_volume_idler_cb(void *data)
+static Eina_Bool _launch_apps_idler_cb(void *data)
{
process_mgr_must_syspopup_launch(SYSPOPUPID_VOLUME, NULL, NULL, NULL, _after_launch_volume);
+ process_mgr_must_launch(APPID_INDICATOR, NULL, NULL, NULL, _after_launch_indicator);
+ process_mgr_must_launch(APPID_QUICKPANEL, NULL, NULL, NULL, _after_launch_quickpanel);
+
return ECORE_CALLBACK_CANCEL;
}
status_active_register_cb(STATUS_ACTIVE_KEY_SETAPPL_SELECTED_PACKAGE_NAME, _change_selected_package_name, NULL);
_change_selected_package_name(STATUS_ACTIVE_KEY_SETAPPL_SELECTED_PACKAGE_NAME, NULL);
- ecore_idler_add(_launch_volume_idler_cb, NULL);
+ ecore_idler_add(_launch_apps_idler_cb, NULL);
}
{
int home_pid = 0;
int volume_pid = 0;
+ int indicator_pid = 0;
+ int quickpanel_pid = 0;
int lock_pid = 0;
_D("Process %d is termianted", pid);
home_pid = home_mgr_get_home_pid();
volume_pid = home_mgr_get_volume_pid();
+ indicator_pid = home_mgr_get_indicator_pid();
+ quickpanel_pid = home_mgr_get_quickpanel_pid();
lock_pid = lock_mgr_get_lock_pid();
if (pid == home_pid) {
} else if (pid == volume_pid) {
_D("volume is dead");
home_mgr_relaunch_volume();
+ } else if (pid == indicator_pid) {
+ _D("indicator is dead");
+ home_mgr_relaunch_indicator();
+ } else if (pid == quickpanel_pid) {
+ _D("quickpanel is dead");
+ home_mgr_relaunch_quickpanel();
} else if (pid == lock_pid) {
_D("lockscreen is dead");
lock_mgr_unlock();