extern int home_mgr_get_indicator_pid(void);
extern int home_mgr_get_quickpanel_pid(void);
extern int home_mgr_get_softkey_pid(void);
+extern void home_mgr_softkey_dead_signal_received();
extern void home_mgr_init(void *data);
extern void home_mgr_fini(void);
.popup = NULL,
};
+ static void home_mgr_softkey_change(void *user_data);
int home_mgr_get_home_pid(void)
{
return s_home_mgr.softkey_pid;
}
+void home_mgr_softkey_dead_signal_received()
+{
+ s_home_mgr.softkey_pid = 0;
+}
+
static void _after_launch_home(int pid)
{
if (pid != s_home_mgr.home_pid) {
int seq = status_active_get()->starter_sequence;
int is_fallback = 0;
- _D("[MENU_DAEMON] _show_home_cb is invoked(%d)", seq);
+ _D("[MENU_DAEMON] _show_home_cb is invoked(%d) (key: %d)", seq, key);
switch (seq) {
case 0:
}
home_mgr_open_home(NULL, NULL, NULL);
+ // we need to launch softkey after home-screen.
+ home_mgr_softkey_change(NULL);
break;
default:
_E("False sequence [%d]", seq);
}
_D("VCONFKEY_SETAPPL_SOFT_KEY STATUS == %d ", state);
+ int pid = home_mgr_get_softkey_pid();
+ if(state == TRUE && pid > 0)
+ {
+ _D("softkey is already running with PID: %d", pid);
+ return ;
+ }
if(state == TRUE) {
process_mgr_must_launch(APPID_SOFTKEY, NULL, NULL, NULL, _after_launch_softkey);
} else {
#endif
process_mgr_must_launch(APPID_INDICATOR, NULL, NULL, NULL, _after_launch_indicator);
process_mgr_must_launch(APPID_QUICKPANEL, NULL, NULL, NULL, _after_launch_quickpanel);
- home_mgr_softkey_change(NULL);
return ECORE_CALLBACK_CANCEL;
}
int lock_pid = 0;
#endif
int oobe_setup_pid = 0;
+ int softkey_pid = 0;
_D("Process %d is termianted", pid);
#endif
oobe_setup_pid = oobe_mgr_get_oobe_setup_pid();
+ // we checking softkey signal here , because we need to reset the softkey pid
+ // so that softkey is only launched when softkey is dead only not on every _show_home_cb.
+ softkey_pid = home_mgr_get_softkey_pid();
+
if (pid == home_pid) {
_D("Homescreen is dead");
home_mgr_relaunch_homescreen();
} else if (pid == oobe_setup_pid) {
_D("oobe setup is dead");
oobe_mgr_oobe_setup_terminated();
+ } else if (pid == softkey_pid) {
+ _D("softkey is dead");
+ home_mgr_softkey_dead_signal_received();
} else {
_D("Unknown process, ignore it");
}