Fixed keygrab error after lazy mount 38/86538/1 accepted/tizen/common/20160906.131243 accepted/tizen/mobile/20160906.222718 accepted/tizen/wearable/20160906.222737 submit/tizen/20160906.044745
authorGeunsun, Lee <gs86.lee@samsung.com>
Thu, 1 Sep 2016 23:24:34 +0000 (08:24 +0900)
committerGeunsun, Lee <gs86.lee@samsung.com>
Thu, 1 Sep 2016 23:26:03 +0000 (08:26 +0900)
Change-Id: I8cd66fbeb94880c0cffd10af69e2839bbfba9d24

src/mobile/hw_key.c
src/mobile/starter.c

index faad5c6..3152361 100644 (file)
@@ -713,12 +713,20 @@ static void _release_multimedia_key(const char *value)
 static Eina_Bool _key_release_cb(void *data, int type, void *event)
 {
        Evas_Event_Key_Up *ev = event;
+       int seq = 0;
 
        retv_if(!ev, ECORE_CALLBACK_RENEW);
        retv_if(!ev->keyname, ECORE_CALLBACK_RENEW);
 
        _D("_key_release_cb : %s Released", ev->keyname);
 
+       /* Priority 0 : Check the booting sequence */
+       seq = status_active_get()->starter_sequence;
+       if (seq == 0) {
+               _D("Sys-lock is showing");
+               return ECORE_CALLBACK_RENEW;
+       }
+
        /* Priority 1 : Cancel event */
        if (!strcmp(ev->keyname, key_name[KEY_CANCEL])) {
                _D("CANCEL Key is released");
@@ -807,12 +815,20 @@ static Eina_Bool _key_release_cb(void *data, int type, void *event)
 static Eina_Bool _key_press_cb(void *data, int type, void *event)
 {
        Evas_Event_Key_Down *ev = event;
+       int seq = 0;
 
        retv_if(!ev, ECORE_CALLBACK_RENEW);
        retv_if(!ev->keyname, ECORE_CALLBACK_RENEW);
 
        _D("_key_press_cb : %s Pressed", ev->keyname);
 
+       /* Priority 0 : Check the booting sequence */
+       seq = status_active_get()->starter_sequence;
+       if (seq == 0) {
+               _D("Sys-lock is showing");
+               return ECORE_CALLBACK_RENEW;
+       }
+
        /* Priority 1 : Cancel */
        /*              every reserved events have to be canceld when cancel key is pressed */
        if (!strcmp(ev->keyname, key_name[KEY_CANCEL])) {
@@ -923,14 +939,12 @@ static void _unset_keygrab(void)
 {
        int i = 0;
 
-       if (key_info.keymap_update_flag == EINA_TRUE && key_info.global_added_flag == EINA_TRUE) {
-               for (i = 0; i < KEY_NAME_MAX; i++) {
-                       ecore_wl_window_keygrab_unset(NULL, key_name[i], 0, 0);
-               }
-
-               key_info.keymap_update_flag = EINA_FALSE;
-               key_info.global_added_flag = EINA_FALSE;
+       for (i = 0; i < KEY_NAME_MAX; i++) {
+               ecore_wl_window_keygrab_unset(NULL, key_name[i], 0, 0);
        }
+
+       key_info.keymap_update_flag = EINA_FALSE;
+       key_info.global_added_flag = EINA_FALSE;
 }
 
 
index 3f68ca0..6e225e3 100755 (executable)
 #define APPID_SYS_LOCK "org.tizen.sys-lock"
 
 
-#if 0
-static void _hide_home(void)
+static void _set_starter_sequence(int val)
 {
-       int seq = status_active_get()->starter_sequence;
-       ret_if(seq == 1);
-
-       vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 0);
-}
-#endif
-
-
-
-static void _show_home(void)
-{
-       vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 1);
+       vconf_set_int(VCONFKEY_STARTER_SEQUENCE, val);
 }
 
 
@@ -228,12 +216,14 @@ static void _mount_and_launch_apps(void)
         * After user data partition mount,
         * launch lockscreen, homescreen, etc.
         */
-       hw_key_create_window();
-
        lock_mgr_init();
        home_mgr_init(NULL);
 
-       _show_home();
+       /*
+        * Set the starter sequence vconfkey.
+        * '1' menas that booting seqeunce is done.
+        */
+       _set_starter_sequence(1);
 }
 
 
@@ -295,6 +285,13 @@ static void _init(struct appdata *ad)
 
        e_dbus_init();
 
+       hw_key_create_window();
+
+       /*
+        * Initialize starter sequence vconfkey.
+        */
+       _set_starter_sequence(0);
+
        is_lazy_mount = get_need_ui_for_lazy_mount();
        _D("Lazy mount : %d", is_lazy_mount);
        if (is_lazy_mount) {
@@ -318,11 +315,11 @@ static void _init(struct appdata *ad)
 
 static void _fini(struct appdata *ad)
 {
-       hw_key_destroy_window();
-
        home_mgr_fini();
        lock_mgr_fini();
 
+       hw_key_destroy_window();
+
        e_dbus_shutdown();
 
        status_active_unregister_cb(STATUS_ACTIVE_KEY_SYSMAN_POWER_OFF_STATUS, _power_off_cb);