Add code to launch apps(indicator, quickpanel) 53/61753/3 accepted/tizen/mobile/20160318.114105 submit/tizen_mobile/20160317.054921
authorgs86.lee <gs86.lee@samsung.com>
Thu, 10 Mar 2016 09:12:18 +0000 (18:12 +0900)
committergs86.lee <gs86.lee@samsung.com>
Wed, 16 Mar 2016 07:41:09 +0000 (16:41 +0900)
Change-Id: Ib7fb5a0673846cf66500b049c1588def30417a6b

include/mobile/home_mgr.h
src/mobile/home_mgr.c
src/mobile/starter.c

index 6fd5061..bea9a36 100644 (file)
@@ -26,6 +26,8 @@ extern void home_mgr_fini(void);
 
 void home_mgr_relaunch_homescreen(void);
 void home_mgr_relaunch_volume(void);
+void home_mgr_relaunch_indicator(void);
+void home_mgr_relaunch_quickpanel(void);
 extern int home_mgr_open_home(const char *pkgname);
 
 // End of a file
index d0517bc..84b3140 100644 (file)
@@ -37,6 +37,8 @@
 #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
@@ -47,6 +49,8 @@ int errno;
 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;
@@ -56,6 +60,8 @@ static struct {
 } 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,
@@ -79,6 +85,20 @@ int home_mgr_get_volume_pid(void)
 
 
 
+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){
@@ -239,6 +259,20 @@ static void _after_launch_volume(int pid)
 
 
 
+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) {
@@ -371,6 +405,20 @@ void home_mgr_relaunch_volume(void)
 
 
 
+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;
@@ -388,9 +436,12 @@ static int _power_off_cb(status_active_key_e key, void *data)
 
 
 
-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;
 }
 
@@ -405,7 +456,7 @@ void home_mgr_init(void *data)
        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);
 }
 
 
index 03067c9..93c8eec 100644 (file)
@@ -198,6 +198,8 @@ static int _check_dead_signal(int pid, void *data)
 {
        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);
@@ -209,6 +211,8 @@ static int _check_dead_signal(int pid, void *data)
 
        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) {
@@ -217,6 +221,12 @@ static int _check_dead_signal(int pid, void *data)
        } 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();