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

Reply via email to