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,
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
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;
}
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())
{
}
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())
{
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);
}
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");
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())
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)
_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");
/* 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)
_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;
}
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)))
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)))
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)
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)
{
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);
/* 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 */
/* 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);