From 5efe075ba2f1817a1b3c4a08951658056f3b55be Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 26 May 2005 15:30:10 +0000 Subject: [PATCH] speed things up a little more SVN revision: 14961 --- src/bin/e_container.c | 44 +++++++++++++++++++++++++++++++++++++++++++ src/bin/e_container.h | 3 +++ src/bin/e_main.c | 5 +++++ src/bin/e_menu.c | 2 ++ src/bin/e_test.c | 2 +- 5 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/bin/e_container.c b/src/bin/e_container.c index 10c9b1c36..cc913e563 100644 --- a/src/bin/e_container.c +++ b/src/bin/e_container.c @@ -810,6 +810,50 @@ e_container_border_list_free(E_Border_List *list) free(list); } +void +e_container_all_freeze(void) +{ + Evas_List *managers, *l; + + managers = e_manager_list(); + for (l = managers; l; l = l->next) + { + Evas_List *ll; + E_Manager *man; + + man = l->data; + for (ll = man->containers; ll; ll = ll->next) + { + E_Container *con; + + con = ll->data; + evas_event_freeze(con->bg_evas); + } + } +} + +void +e_container_all_thaw(void) +{ + Evas_List *managers, *l; + + managers = e_manager_list(); + for (l = managers; l; l = l->next) + { + Evas_List *ll; + E_Manager *man; + + man = l->data; + for (ll = man->containers; ll; ll = ll->next) + { + E_Container *con; + + con = ll->data; + evas_event_thaw(con->bg_evas); + } + } +} + /* local subsystem functions */ static void _e_container_free(E_Container *con) diff --git a/src/bin/e_container.h b/src/bin/e_container.h index 90133cbce..ae4a84a03 100644 --- a/src/bin/e_container.h +++ b/src/bin/e_container.h @@ -133,6 +133,9 @@ EAPI void e_container_border_lower(E_Border *bd); EAPI void e_container_border_stack_above(E_Border *bd, E_Border *above); EAPI void e_container_border_stack_below(E_Border *bd, E_Border *below); +EAPI void e_container_all_freeze(void); +EAPI void e_container_all_thaw(void); + extern EAPI int E_EVENT_CONTAINER_RESIZE; #endif diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 0d9592a1a..73c87c655 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -352,6 +352,9 @@ main(int argc, char **argv) "failed. Perhaps another window manager is running?\n")); _e_main_shutdown(-1); } + + e_container_all_freeze(); + _e_main_shutdown_push(_e_main_screens_shutdown); /* init app system */ if (!e_app_init()) @@ -441,6 +444,8 @@ main(int argc, char **argv) ecore_timer_add(16.0, _e_main_cb_startup_fake_end, NULL); } + e_container_all_thaw(); + /* run any testing code now we are set up */ e_test(); diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 47b1de8c5..22ef6fd35 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -1136,6 +1136,7 @@ _e_menu_realize(E_Menu *m) ecore_evas_callback_resize_set(m->ecore_evas, _e_menu_cb_ecore_evas_resize); m->evas = ecore_evas_get(m->ecore_evas); + evas_event_freeze(m->evas); /* move cursor out to avoid event cycles during setup */ evas_event_feed_mouse_in(m->evas, NULL); evas_event_feed_mouse_move(m->evas, -1000000, -1000000, NULL); @@ -1190,6 +1191,7 @@ _e_menu_realize(E_Menu *m) _e_menu_items_layout_update(m); e_box_thaw(o); evas_object_resize(m->bg_object, m->cur.w, m->cur.h); + evas_event_thaw(m->evas); } static void diff --git a/src/bin/e_test.c b/src/bin/e_test.c index 5d01719d3..56c848944 100644 --- a/src/bin/e_test.c +++ b/src/bin/e_test.c @@ -170,7 +170,7 @@ _cb_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change) break; } } -#elif 0 +#elif 1 static int _e_test_timer(void *data) {