discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a3fbcc339b3d3daa19fe921c5d6278621462ae61
commit a3fbcc339b3d3daa19fe921c5d6278621462ae61 Author: Mike Blumenkrantz <[email protected]> Date: Wed Feb 5 13:22:42 2014 -0500 Revert "Revert "Revert "e_main_idler_freeze/thaw - disable - this causes no end of wierdnesses""" This reverts commit 91b3f2e0e1d14e8d6c11283439c5fa3403dff029. revert wars part 4: the blizzard blitz! the main point of freezing idlers here was not, in fact, to optimize, but to block an infinite loop which pegged the cpu until screensaver ended. this solution should be less issue-prone for the one person who had issues with the previous fix. --- src/bin/e.h | 2 -- src/bin/e_comp.c | 12 +++++------- src/bin/e_comp_canvas.c | 1 - src/bin/e_main.c | 24 ------------------------ 4 files changed, 5 insertions(+), 34 deletions(-) diff --git a/src/bin/e.h b/src/bin/e.h index 3e91a59..296f0bd 100644 --- a/src/bin/e.h +++ b/src/bin/e.h @@ -273,8 +273,6 @@ typedef struct _E_Rect E_Rect; # include "e_includes.h" EAPI double e_main_ts(const char *str); -EINTERN void e_main_idler_freeze(void); -EINTERN void e_main_idler_thaw(void); struct _E_Rect { diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 368dbd1..08a393c 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -315,7 +315,7 @@ _e_comp_client_update(E_Client *ec) e_comp_object_render_update_add(ec->frame); } } - if (e_pixmap_size_get(ec->pixmap, &pw, &ph)) + if ((!ec->comp->saver) && e_pixmap_size_get(ec->pixmap, &pw, &ph)) { //INF("PX DIRTY: PX(%dx%d) CLI(%dx%d)", pw, ph, ec->client.w, ec->client.h); e_pixmap_image_refresh(ec->pixmap); @@ -816,7 +816,6 @@ _e_comp_screensaver_on(void *data EINA_UNUSED, int type EINA_UNUSED, void *event c->saver = EINA_TRUE; if (c->render_animator) ecore_animator_freeze(c->render_animator); - E_FREE_FUNC(c->update_job, ecore_job_del); EINA_LIST_FOREACH(c->zones, ll, zone) { e_comp_override_add(c); @@ -840,13 +839,11 @@ _e_comp_screensaver_off(void *data EINA_UNUSED, int type EINA_UNUSED, void *even // fixme: use hash if compositors list > 4 EINA_LIST_FOREACH(compositors, l, c) { + E_Client *ec; if (!c->saver) continue; - /* frozen in _e_comp_canvas_screensaver_active() */ -// e_main_idler_thaw(); c->saver = EINA_FALSE; if (!c->nocomp) ecore_evas_manual_render_set(c->ee, EINA_FALSE); - e_comp_render_queue(c); EINA_LIST_FOREACH(c->zones, ll, zone) { edje_object_signal_emit(zone->base, "e,state,screensaver,off", "e"); @@ -854,6 +851,9 @@ _e_comp_screensaver_off(void *data EINA_UNUSED, int type EINA_UNUSED, void *even e_zone_fade_handle(zone, 0, 0.5); e_comp_override_timed_pop(c); } + E_CLIENT_FOREACH(c, ec) + if (e_comp_object_damage_exists(ec->frame)) + e_comp_object_render_update_add(ec->frame); } return ECORE_CALLBACK_PASS_ON; @@ -1387,8 +1387,6 @@ e_comp_render_queue(E_Comp *c) E_OBJECT_TYPE_CHECK(c, E_COMP_TYPE); if (!c) return; - if (c->saver) return; - if (conf->lock_fps) { ecore_animator_thaw(c->render_animator); diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index 363c660..954c539 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -91,7 +91,6 @@ _e_comp_canvas_screensaver_active(void *d EINA_UNUSED, Evas_Object *obj, const c { E_Comp *c; /* thawed in _e_comp_screensaver_off() */ -// e_main_idler_freeze(); ecore_animator_frametime_set(10.0); c = e_comp_util_evas_object_comp_get(obj); if (!c->nocomp) diff --git a/src/bin/e_main.c b/src/bin/e_main.c index e601f5c..ada9635 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -87,7 +87,6 @@ static Eina_Bool _e_main_cb_idle_after(void *data __UNUSED__); static Eina_Bool _e_main_cb_startup_fake_end(void *data __UNUSED__); /* local variables */ -static Eina_Bool frozen = EINA_FALSE; static int idle_freeze = 0; static Eina_Bool really_know = EINA_FALSE; static Eina_Bool locked = EINA_FALSE; @@ -1672,7 +1671,6 @@ _e_main_cb_idle_before(void *data __UNUSED__) e_client_idler_before(); e_pointer_idler_before(); edje_thaw(); - frozen = EINA_FALSE; return ECORE_CALLBACK_RENEW; } @@ -1682,7 +1680,6 @@ _e_main_cb_idle_after(void *data __UNUSED__) static int first_idle = 1; edje_freeze(); - frozen = EINA_TRUE; #ifdef E19_RELEASE_BUILD if (first_idle) @@ -1717,24 +1714,3 @@ _e_main_cb_startup_fake_end(void *data __UNUSED__) e_init_hide(); return ECORE_CALLBACK_CANCEL; } - -EINTERN void -e_main_idler_freeze(void) -{ - if (idle_freeze++) return; - E_FREE_FUNC(_idle_before, ecore_idle_enterer_del); - E_FREE_FUNC(_idle_after, ecore_idle_enterer_del); - if (!frozen) return; - edje_thaw(); - frozen = EINA_FALSE; -} - -EINTERN void -e_main_idler_thaw(void) -{ - if (!idle_freeze) return; - if (--idle_freeze) return; - - _idle_before = ecore_idle_enterer_before_add(_e_main_cb_idle_before, NULL); - _idle_after = ecore_idle_enterer_add(_e_main_cb_idle_after, NULL); -} --
