forked from enlightenment/enlightenment
init anim - fix sudden vanish of init splash in some cases
this seems to happen to @manmower in T6619. it may just be timing changes that changed the start loop time to be at init of ecore maybe ... but it was doing a forced hide and not a clean "done" that animates/fades. so fix this along with deferring show until the first render pre. this fixes T6619
This commit is contained in:
parent
cd74104405
commit
ef98964bc9
|
@ -23,6 +23,19 @@ _e_init_cb_signal_done_ok(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
e_init_hide();
|
e_init_hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_init_render_pre(void *data EINA_UNUSED, Evas *e, void *info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Evas_Object *o;
|
||||||
|
|
||||||
|
evas_event_callback_del(e, EVAS_CALLBACK_RENDER_PRE, _e_init_render_pre);
|
||||||
|
EINA_LIST_FOREACH(splash_objs, l, o)
|
||||||
|
{
|
||||||
|
evas_object_show(o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* public functions */
|
/* public functions */
|
||||||
EINTERN int
|
EINTERN int
|
||||||
e_init_init(void)
|
e_init_init(void)
|
||||||
|
@ -67,9 +80,10 @@ e_init_show(void)
|
||||||
evas_object_move(o, zone->x, zone->y);
|
evas_object_move(o, zone->x, zone->y);
|
||||||
evas_object_resize(o, zone->w, zone->h);
|
evas_object_resize(o, zone->w, zone->h);
|
||||||
evas_object_layer_set(o, E_LAYER_MAX - 1000);
|
evas_object_layer_set(o, E_LAYER_MAX - 1000);
|
||||||
evas_object_show(o);
|
|
||||||
splash_objs = eina_list_append(splash_objs, o);
|
splash_objs = eina_list_append(splash_objs, o);
|
||||||
}
|
}
|
||||||
|
evas_event_callback_add
|
||||||
|
(e_comp->evas, EVAS_CALLBACK_RENDER_PRE, _e_init_render_pre, NULL);
|
||||||
edje_object_part_text_set(_e_init_object, "e.text.disable_text",
|
edje_object_part_text_set(_e_init_object, "e.text.disable_text",
|
||||||
"Disable splash screen");
|
"Disable splash screen");
|
||||||
edje_object_signal_callback_add(_e_init_object, "e,state,done_ok", "e",
|
edje_object_signal_callback_add(_e_init_object, "e,state,done_ok", "e",
|
||||||
|
@ -112,12 +126,20 @@ e_init_status_set(const char *str)
|
||||||
E_API void
|
E_API void
|
||||||
e_init_done(void)
|
e_init_done(void)
|
||||||
{
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Evas_Object *o;
|
||||||
|
|
||||||
undone--;
|
undone--;
|
||||||
if (undone > 0) return;
|
if (undone > 0) return;
|
||||||
|
if (!done)
|
||||||
|
{
|
||||||
done = 1;
|
done = 1;
|
||||||
ecore_event_add(E_EVENT_INIT_DONE, NULL, NULL, NULL);
|
ecore_event_add(E_EVENT_INIT_DONE, NULL, NULL, NULL);
|
||||||
// printf("---DONE %p\n", client);
|
EINA_LIST_FOREACH(splash_objs, l, o)
|
||||||
edje_object_signal_emit(_e_init_object, "e,state,done", "e");
|
{
|
||||||
|
edje_object_signal_emit(o, "e,state,done", "e");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
E_API void
|
E_API void
|
||||||
|
|
|
@ -1042,9 +1042,6 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
TS("Run Startup Apps Done");
|
TS("Run Startup Apps Done");
|
||||||
|
|
||||||
if (e_config->show_splash && (!after_restart))
|
|
||||||
ecore_timer_loop_add(2.0, _e_main_cb_startup_fake_end, NULL);
|
|
||||||
|
|
||||||
TS("E_Comp Thaw");
|
TS("E_Comp Thaw");
|
||||||
e_comp_all_thaw();
|
e_comp_all_thaw();
|
||||||
TS("E_Comp Thaw Done");
|
TS("E_Comp Thaw Done");
|
||||||
|
@ -1085,6 +1082,9 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
e_util_env_set("E_RESTART", "1");
|
e_util_env_set("E_RESTART", "1");
|
||||||
|
|
||||||
|
if (e_config->show_splash && (!after_restart))
|
||||||
|
ecore_timer_add(2.0, _e_main_cb_startup_fake_end, NULL);
|
||||||
|
|
||||||
TS("MAIN LOOP AT LAST");
|
TS("MAIN LOOP AT LAST");
|
||||||
if (!setjmp(x_fatal_buff))
|
if (!setjmp(x_fatal_buff))
|
||||||
ecore_main_loop_begin();
|
ecore_main_loop_begin();
|
||||||
|
@ -1814,6 +1814,6 @@ _e_main_cb_idle_after(void *data EINA_UNUSED)
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_main_cb_startup_fake_end(void *data EINA_UNUSED)
|
_e_main_cb_startup_fake_end(void *data EINA_UNUSED)
|
||||||
{
|
{
|
||||||
e_init_hide();
|
e_init_done();
|
||||||
return ECORE_CALLBACK_CANCEL;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue