Enlightenment CVS committal Author : handyande Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_main.c Log Message: Speedups - reusing where possible, and delete, not hide on free =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_mod_main.c 10 Jan 2005 18:59:04 -0000 1.5 +++ e_mod_main.c 10 Jan 2005 19:51:10 -0000 1.6 @@ -177,21 +177,21 @@ free(e->conf); E_CONFIG_DD_FREE(e->conf_edd); - evas_object_hide(e->base); + evas_object_del(e->base); evas_object_free(e->base); - evas_object_hide(e->screen); + evas_object_del(e->screen); evas_object_free(e->screen); while(e->desks) { - evas_object_hide(e->desks->data); + evas_object_del(e->desks->data); evas_object_free(e->desks->data); e->desks = evas_list_remove_list(e->desks, e->desks); } while(e->wins) { - evas_object_hide(e->wins->data); + evas_object_del(e->wins->data); evas_object_free(e->wins->data); e->wins = evas_list_remove_list(e->wins, e->wins); } @@ -241,7 +241,7 @@ E_Zone *zone; E_Desk *desk, *current; E_Border *border; - Evas_List *clients; + Evas_List *clients, *desks, *wins; Evas_Object *desk_obj, *win_obj; int desks_x, desks_y, x, y, top, toptmp; @@ -261,19 +261,8 @@ scaley = (double) ph / hh; evas_object_resize(e->screen, pw, ph); - while(e->desks) - { - evas_object_hide(e->desks->data); - evas_object_free(e->desks->data); - e->desks = evas_list_remove_list(e->desks, e->desks); - } - while(e->wins) - { - evas_object_hide(e->wins->data); - evas_object_free(e->wins->data); - e->wins = evas_list_remove_list(e->wins, e->wins); - } - + desks = e->desks; + wins = e->wins; current = e_desk_current_get(zone); for (x = 0; x < desks_x; x++) for (y = 0; y < desks_y; y++) @@ -281,18 +270,25 @@ desk = e_desk_at_xy_get(zone, x, y); px = e->fx + (x * pw); py = e->fy + (y * ph); - desk_obj = edje_object_add(e->evas); - edje_object_file_set(desk_obj, - /* FIXME: "default.eet" needs to come from conf */ - e_path_find(path_themes, "default.eet"), - "modules/pager/desk"); - evas_object_pass_events_set(desk_obj, 1); + + desk_obj = NULL; + if (desks) + desk_obj = (Evas_Object *) desks->data; /* re-use the objects if possible */ + if (!desk_obj) + { + desk_obj = edje_object_add(e->evas); + edje_object_file_set(desk_obj, + /* FIXME: "default.eet" needs to come from conf */ + e_path_find(path_themes, "default.eet"), + "modules/pager/desk"); + evas_object_pass_events_set(desk_obj, 1); + evas_object_show(desk_obj); + e->desks = evas_list_append(e->desks, desk_obj); + } evas_object_resize(desk_obj, pw, ph); evas_object_move(desk_obj, px, py); - evas_object_show(desk_obj); top = evas_object_layer_get(desk_obj); - e->desks = evas_list_append(e->desks, desk_obj); clients = desk->clients; while (clients) @@ -304,28 +300,40 @@ winy = (Evas_Coord) ((double) border->y) * scaley; winw = (Evas_Coord) ((double) border->w) * scalex; winh = (Evas_Coord) ((double) border->h) * scaley; - win_obj = edje_object_add(e->evas); - edje_object_file_set(win_obj, - /* FIXME: "default.eet" needs to come from conf */ - e_path_find(path_themes, "default.eet"), - "modules/pager/window"); - evas_object_pass_events_set(win_obj, 1); + + win_obj = NULL; + if (wins) + win_obj = (Evas_Object *) wins->data; + if (!win_obj) + { + win_obj = edje_object_add(e->evas); + edje_object_file_set(win_obj, + /* FIXME: "default.eet" needs to come from conf */ + e_path_find(path_themes, "default.eet"), + "modules/pager/window"); + evas_object_pass_events_set(win_obj, 1); + + evas_object_show(win_obj); + e->wins = evas_list_append(e->wins, win_obj); + } evas_object_resize(win_obj, winw, winh); evas_object_move(win_obj, px + winx, py + winy); - evas_object_show(win_obj); toptmp = evas_object_layer_get(win_obj); if (toptmp > top) top = toptmp; - e->wins = evas_list_append(e->wins, win_obj); clients = clients->next; + if (wins) + wins = wins->next; } if (desk == current) { evas_object_move(e->screen, px, py); evas_object_layer_set(e->screen, top + 1); } + if (desks) + desks = desks->next; } } ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs