quick-init: delayed to init edje, efreet, e_pointer 89/53489/3
authorMinJeong Kim <minjjj.kim@samsung.com>
Mon, 7 Dec 2015 09:01:38 +0000 (18:01 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Tue, 8 Dec 2015 01:16:39 +0000 (10:16 +0900)
Change-Id: I4ca8ccc5bff653a06aba001b69b01ed0a4de3705

src/bin/e_client.c
src/bin/e_comp.c
src/bin/e_desk.c
src/bin/e_main.c
src/bin/e_pointer.c
src/modules/wl_drm/e_mod_main.c
src/modules/wl_x11/e_mod_main.c

index 388a9ef..b65e0e9 100644 (file)
@@ -2971,10 +2971,12 @@ e_client_init(void)
 
    E_LIST_HANDLER_APPEND(handlers, E_EVENT_POINTER_WARP,
                          _e_client_cb_pointer_warp, NULL);
+#ifndef ENABLE_QUICK_INIT
    E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_DESKTOP_CACHE_UPDATE,
                          _e_client_cb_efreet_cache_update, NULL);
    E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE,
                          _e_client_cb_efreet_cache_update, NULL);
+#endif
    E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME,
                          _e_client_cb_config_icon_theme, NULL);
    E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_MODE_CHANGED,
index c7cdb72..cc225ba 100644 (file)
@@ -1363,9 +1363,23 @@ e_comp_shutdown(void)
 EAPI void
 e_comp_deferred_job(void)
 {
+   /* Add elm fake win */
    e_comp->elm = elm_win_fake_add(e_comp->ee);
    evas_object_show(e_comp->elm);
 
+   /* Bg update */
+   if (e_zone_current_get(e_comp)->bg_object)
+     e_bg_zone_update(e_zone_current_get(e_comp), E_BG_TRANSITION_DESK);
+   else
+     e_bg_zone_update(e_zone_current_get(e_comp), E_BG_TRANSITION_START);
+
+   /* Pointer setting */
+   if (!e_comp->pointer)
+     {
+        e_comp->pointer = e_pointer_canvas_new(e_comp->ee, EINA_TRUE);
+        e_pointer_hide(e_comp->pointer);
+     }
+
 #if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
    e_comp_wl_deferred_job();
 #endif
index 6b08aef..de14d7b 100644 (file)
@@ -296,10 +296,12 @@ e_desk_show(E_Desk *desk)
           evas_object_focus_set(e_client_focused_get()->frame, 0);
      }
 
+#ifndef ENABLE_QUICK_INIT
    if (was_zone)
      e_bg_zone_update(desk->zone, E_BG_TRANSITION_DESK);
    else
      e_bg_zone_update(desk->zone, E_BG_TRANSITION_START);
+#endif
 
    ev = E_NEW(E_Event_Desk_Show, 1);
    ev->desk = desk;
index e4151be..4d4cf4c 100644 (file)
@@ -225,6 +225,26 @@ _e_main_subsystem_defer(void *data EINA_UNUSED)
      }
    TS("[DEFERRED] Elementary Init Done");
 
+   TS("[DEFERRED] Edje Init");
+   if (!edje_init())
+     {
+        e_error_message_show(_("Enlightenment cannot initialize Edje!\n"));
+        _e_main_shutdown(-1);
+     }
+   TS("[DEFERRED] Edje Init Done");
+   _e_main_shutdown_push(edje_shutdown);
+
+   TS("[DEFERRED] Efreet Init");
+   if (!efreet_init())
+     {
+        e_error_message_show(_("Enlightenment cannot initialize the FDO desktop system.\n"
+                               "Perhaps you lack permissions on ~/.cache/efreet or are\n"
+                               "out of memory or disk space?"));
+        _e_main_shutdown(-1);
+     }
+   TS("[DEFERRED] Efreet Init Done");
+   _e_main_shutdown_push(efreet_shutdown);
+
    TS("[DEFERRED] Screens Init: win");
    if (!e_win_init())
      {
@@ -233,6 +253,16 @@ _e_main_subsystem_defer(void *data EINA_UNUSED)
      }
    TS("[DEFERRED] Screens Init: win Done");
 
+   TS("[DEFERRED] E_Pointer Init");
+   if (!e_pointer_init())
+     {
+        e_error_message_show(_("Enlightenment cannot set up its pointer system.\n"));
+        _e_main_shutdown(-1);
+     }
+
+   TS("[DEFERRED] E_Pointer Init Done");
+   _e_main_shutdown_push(e_pointer_shutdown);
+
    TS("[DEFERRED] E_Scale Init");
    if (!e_scale_init())
      {
@@ -242,6 +272,10 @@ _e_main_subsystem_defer(void *data EINA_UNUSED)
    TS("[DEFERRED E_Scale Init Done");
    _e_main_shutdown_push(e_scale_shutdown);
 
+   TS("[DEFERRED] Efreet Paths");
+   _e_main_efreet_paths_init();
+   TS("[DEFERRED] Efreet Paths Done");
+
    TS("[DEFERRED] E_Test_Helper Init");
    e_test_helper_init();
    _e_main_shutdown_push(e_test_helper_shutdown);
@@ -1154,16 +1188,6 @@ main(int argc, char **argv)
      }
    TS("Ecore_Evas Engine Check Done");
 
-   TS("Edje Init");
-   if (!edje_init())
-     {
-        e_error_message_show(_("Enlightenment cannot initialize Edje!\n"));
-        _e_main_shutdown(-1);
-     }
-   TS("Edje Init Done");
-   _e_main_shutdown_push(edje_shutdown);
-   edje_freeze();
-
    /*** Initialize E Subsystems We Need ***/
 
    TS("E Directories Init");
@@ -1213,7 +1237,7 @@ main(int argc, char **argv)
    TS("E Paths Init Done");
    _e_main_shutdown_push(_e_main_path_shutdown);
 
-   edje_frametime_set(1.0 / e_config->framerate);
+   ecore_animator_frametime_set(1.0 / e_config->framerate);
 
    TS("E_Font Init");
    if (!e_font_init())
@@ -1242,17 +1266,6 @@ main(int argc, char **argv)
    TS("E_Moveresize Init Done");
    _e_main_shutdown_push(e_moveresize_shutdown);
 
-   TS("Efreet Init");
-   if (!efreet_init())
-     {
-        e_error_message_show(_("Enlightenment cannot initialize the FDO desktop system.\n"
-                               "Perhaps you lack permissions on ~/.cache/efreet or are\n"
-                               "out of memory or disk space?"));
-        _e_main_shutdown(-1);
-     }
-   TS("Efreet Init Done");
-   _e_main_shutdown_push(efreet_shutdown);
-
    e_screensaver_preinit();
 
    if (e_config->show_splash)
@@ -1308,22 +1321,6 @@ main(int argc, char **argv)
    _e_main_shutdown_push(_e_main_screens_shutdown);
    e_screensaver_force_update();
 
-   TS("E_Pointer Init");
-   if (!e_pointer_init())
-     {
-        e_error_message_show(_("Enlightenment cannot set up its pointer system.\n"));
-        _e_main_shutdown(-1);
-     }
-   TS("E_Pointer Init Done");
-   _e_main_shutdown_push(e_pointer_shutdown);
-   e_menu_init();
-
-   if (e_config->show_splash)
-     e_init_status_set(_("Setup Paths"));
-   TS("Efreet Paths");
-   _e_main_efreet_paths_init();
-   TS("Efreet Paths Done");
-
    if (e_config->show_splash)
      e_init_status_set(_("Setup System Controls"));
    TS("E_Sys Init");
index e21b6e0..99cae1a 100644 (file)
@@ -10,6 +10,7 @@ struct _E_Pointer_Stack
 /* local variables */
 static Eina_List *_hdlrs = NULL;
 static Eina_List *_ptrs = NULL;
+static Eina_Bool _initted = EINA_FALSE;
 
 static inline void 
 _e_pointer_hot_update(E_Pointer *ptr, int x, int y)
@@ -453,12 +454,14 @@ e_pointer_init(void)
                          _e_pointer_cb_mouse_move, NULL);
    E_LIST_HANDLER_APPEND(_hdlrs, ECORE_EVENT_MOUSE_WHEEL, 
                          _e_pointer_cb_mouse_wheel, NULL);
+   _initted = EINA_TRUE;
    return 1;
 }
 
 EINTERN int 
 e_pointer_shutdown(void)
 {
+   _initted = EINA_FALSE;
    E_FREE_LIST(_hdlrs, ecore_event_handler_del);
    return 1;
 }
@@ -469,6 +472,7 @@ e_pointer_window_new(Ecore_Window win, Eina_Bool filled)
    E_Pointer *ptr = NULL;
 
    EINA_SAFETY_ON_FALSE_RETURN_VAL(win, NULL);
+   if (!_initted) return NULL;
 
    /* allocate space for new pointer */
    if (!(ptr = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_cb_free)))
@@ -497,6 +501,7 @@ e_pointer_canvas_new(Ecore_Evas *ee, Eina_Bool filled)
    E_Pointer *ptr = NULL;
 
    EINA_SAFETY_ON_FALSE_RETURN_VAL(ee, NULL);
+   if (!_initted) return NULL;
 
    /* allocate space for new pointer */
    if (!(ptr = E_OBJECT_ALLOC(E_Pointer, E_POINTER_TYPE, _e_pointer_cb_free)))
@@ -563,6 +568,8 @@ e_pointers_size_set(int size)
 EAPI void 
 e_pointer_hide(E_Pointer *ptr)
 {
+   EINA_SAFETY_ON_NULL_RETURN(ptr);
+
    if ((ptr->evas) && (!ptr->canvas)) 
      _e_pointer_canvas_del(ptr);
    else if (ptr->canvas)
@@ -762,6 +769,8 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y)
    Evas_Object *o;
    E_Client *ec;
 
+   EINA_SAFETY_ON_NULL_RETURN(ptr);
+
    /* don't show cursor if in hidden mode */
    if (!e_config->show_cursor)
      {
@@ -786,7 +795,7 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y)
           ec->hidden = 1;
         ecore_evas_object_cursor_set(ptr->ee, obj, EVAS_LAYER_MAX, x, y);
      }
-   else
+   else if (ptr->o_ptr)
      {
         ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, EVAS_LAYER_MAX, ptr->hot.x, ptr->hot.y);
         evas_object_show(ptr->o_ptr);
index fbc203b..8442689 100644 (file)
@@ -249,9 +249,11 @@ e_modapi_init(E_Module *m)
 
    /* comp->pointer =  */
    /*   e_pointer_window_new(ecore_evas_window_get(comp->ee), 1); */
-   comp->pointer = e_pointer_canvas_new(comp->ee, EINA_TRUE);
-   comp->pointer->color = EINA_TRUE;
-   e_pointer_hide(comp->pointer);
+   if ((comp->pointer = e_pointer_canvas_new(comp->ee, EINA_TRUE)))
+     {
+        comp->pointer->color = EINA_TRUE;
+        e_pointer_hide(comp->pointer);
+     }
 
    /* FIXME: We need a way to trap for user changing the keymap inside of E
     *        without the event coming from X11 */
index 6845cc7..bc34295 100644 (file)
@@ -116,8 +116,8 @@ e_modapi_init(E_Module *m)
 
    /* comp->pointer =  */
    /*   e_pointer_window_new(ecore_evas_window_get(comp->ee), EINA_TRUE); */
-   comp->pointer = e_pointer_canvas_new(comp->ee, EINA_TRUE);
-   comp->pointer->color = EINA_TRUE;
+   if ((comp->pointer = e_pointer_canvas_new(comp->ee, EINA_TRUE))
+       comp->pointer->color = EINA_TRUE;
 
    /* force a keymap update so compositor keyboard gets setup */
    _cb_keymap_changed(comp->wl_comp_data, 0, NULL);