Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_container.c 


Log Message:

Tracking a strange segfault with shelf removal; add a little extra trapping
for a shape change.
Remove whitespace & fix some formatting.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -3 -r1.121 -r1.122
--- e_container.c       18 Oct 2007 09:06:30 -0000      1.121
+++ e_container.c       11 May 2008 21:42:38 -0000      1.122
@@ -39,7 +39,7 @@
 {
    E_EVENT_CONTAINER_RESIZE = ecore_event_type_new();
    container_count = 0;
-   
+
    handlers = evas_list_append(handlers, 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _e_container_cb_mouse_in, 
NULL));
    handlers = evas_list_append(handlers, 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, _e_container_cb_mouse_out, 
NULL));
    handlers = evas_list_append(handlers, 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, 
_e_container_cb_mouse_down, NULL));
@@ -71,7 +71,7 @@
    int i;
    Ecore_X_Window mwin;
    static int container_num = 0;
-   
+
    con = E_OBJECT_ALLOC(E_Container, E_CONTAINER_TYPE, _e_container_free);
    if (!con) return NULL;
    con->manager = man;
@@ -86,9 +86,8 @@
        ecore_x_window_raise(con->win);
      }
    else
-     {
-       con->win = con->manager->win;
-     }
+     con->win = con->manager->win;
+
    con->bg_ecore_evas = e_canvas_new(e_config->evas_engine_container, con->win,
                                     0, 0, con->w, con->h, 1, 1,
                                     &(con->bg_win), NULL);
@@ -113,7 +112,7 @@
    evas_object_name_set(o, "e/desktop/background");
    evas_object_data_set(o, "e_container", con);
    evas_object_show(o);
-   
+
    con->num = container_num;
    container_num++;
    snprintf(name, sizeof(name), _("Container %d"), con->num);
@@ -164,23 +163,22 @@
        for (l = screens; l; l = l->next)
          {
             E_Screen *scr;
-            
+
             scr = l->data;
             zone = e_zone_new(con, scr->screen, scr->escreen, scr->x, scr->y, 
scr->w, scr->h);
          }
      }
    else
-     {
-       zone = e_zone_new(con, 0, 0, 0, 0, con->w, con->h);
-     }
+     zone = e_zone_new(con, 0, 0, 0, 0, con->w, con->h);
    return con;
 }
-        
+
 EAPI void
 e_container_show(E_Container *con)
 {
    E_OBJECT_CHECK(con);
    E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
+
    if (con->visible) return;
    ecore_evas_show(con->bg_ecore_evas);
    ecore_x_window_configure(con->bg_win,
@@ -193,12 +191,13 @@
    ecore_x_icccm_state_set(con->bg_win, ECORE_X_WINDOW_STATE_HINT_NORMAL);
    con->visible = 1;
 }
-        
+
 EAPI void
 e_container_hide(E_Container *con)
 {
    E_OBJECT_CHECK(con);
    E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
+
    if (!con->visible) return;
    ecore_evas_hide(con->bg_ecore_evas);
    if (con->win != con->manager->win)
@@ -215,13 +214,14 @@
 
    for (l = man->containers; l; l = l->next)
      {
-       E_Container *con = l->data;
-       if (con->visible)
-         return con;
+       E_Container *con;
+        
+        if (!(con = l->data)) continue;
+       if (con->visible) return con;
      }
+
    /* If noone is available, return the first */
-   if (!man->containers)
-     return NULL;
+   if (!man->containers) return NULL;
    l = man->containers;
    return (E_Container *)l->data;
 }
@@ -236,10 +236,9 @@
    for (l = man->containers; l; l = l->next)
      {
        E_Container *con;
-       
+
        con = l->data;
-       if (con->num == num)
-         return con;
+       if (con->num == num) return con;
      }
    return NULL;
 }
@@ -256,7 +255,7 @@
      ecore_x_window_move(con->win, con->x, con->y);
    evas_object_move(con->bg_blank_object, con->x, con->y);
 }
-        
+
 EAPI void
 e_container_resize(E_Container *con, int w, int h)
 {
@@ -307,14 +306,14 @@
 EAPI E_Zone *
 e_container_zone_at_point_get(E_Container *con, int x, int y)
 {
-   Evas_List *l;
-   
+   Evas_List *l = NULL;
+
    E_OBJECT_CHECK_RETURN(con, NULL);
    E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
    for (l = con->zones; l; l = l->next)
      {
        E_Zone *zone;
-       
+
        zone = l->data;
        if (E_INSIDE(x, y, zone->x, zone->y, zone->w, zone->h))
          return zone;
@@ -325,17 +324,16 @@
 EAPI E_Zone *
 e_container_zone_number_get(E_Container *con, int num)
 {
-   Evas_List *l;
-   
+   Evas_List *l = NULL;
+
    E_OBJECT_CHECK_RETURN(con, NULL);
    E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
    for (l = con->zones; l; l = l->next)
      {
        E_Zone *zone;
-       
+
        zone = l->data;
-       if (zone->num == num)
-         return zone;
+       if (zone->num == num) return zone;
      }
    return NULL;
 }
@@ -343,17 +341,16 @@
 EAPI E_Zone *
 e_container_zone_id_get(E_Container *con, int id)
 {
-   Evas_List *l;
-   
+   Evas_List *l = NULL;
+
    E_OBJECT_CHECK_RETURN(con, NULL);
    E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
    for (l = con->zones; l; l = l->next)
      {
        E_Zone *zone;
-       
+
        zone = l->data;
-       if (zone->id == id)
-         return zone;
+       if (zone->id == id) return zone;
      }
    return NULL;
 }
@@ -362,10 +359,10 @@
 e_container_shape_add(E_Container *con)
 {
    E_Container_Shape *es;
-   
+
    E_OBJECT_CHECK_RETURN(con, NULL);
    E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, 0);
-   
+
    es = E_OBJECT_ALLOC(E_Container_Shape, E_CONTAINER_SHAPE_TYPE, 
_e_container_shape_free);
    E_OBJECT_DEL_SET(es, _e_container_shape_del);
    es->con = con;
@@ -449,7 +446,7 @@
 e_container_shape_change_callback_add(E_Container *con, void (*func) (void 
*data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data)
 {
    E_Container_Shape_Callback *cb;
-   
+
    E_OBJECT_CHECK(con);
    E_OBJECT_TYPE_CHECK(con, E_CONTAINER_TYPE);
    cb = calloc(1, sizeof(E_Container_Shape_Callback));
@@ -462,7 +459,7 @@
 EAPI void
 e_container_shape_change_callback_del(E_Container *con, void (*func) (void 
*data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data)
 {
-   Evas_List *l;
+   Evas_List *l = NULL;
 
    /* FIXME: if we call this from within a callback we are in trouble */
    E_OBJECT_CHECK(con);
@@ -470,7 +467,7 @@
    for (l = con->shape_change_cb; l; l = l->next)
      {
        E_Container_Shape_Callback *cb;
-       
+
        cb = l->data;
        if ((cb->func == func) && (cb->data == data))
          {
@@ -492,10 +489,10 @@
 EAPI void
 e_container_shape_rects_set(E_Container_Shape *es, Ecore_X_Rectangle *rects, 
int num)
 {
-   Evas_List *l;
+   Evas_List *l = NULL;
    int i;
    E_Rect *r;
-   
+
    E_OBJECT_CHECK(es);
    E_OBJECT_TYPE_CHECK(es, E_CONTAINER_SHAPE_TYPE);
    if (es->shape)
@@ -698,7 +695,7 @@
    E_Border *below = NULL;
    Evas_List *l;
    int pos = 0, i;
-   
+
    if (!bd->zone) return NULL;
    /* Remove from old layer */
    for (i = 0; i < 7; i++)
@@ -814,9 +811,9 @@
 EAPI E_Border_List *
 e_container_border_list_first(E_Container *con)
 {
-   E_Border_List *list;
-   list = E_NEW(E_Border_List, 1);
-   if (!list) return NULL;
+   E_Border_List *list = NULL;
+
+   if (!(list = E_NEW(E_Border_List, 1))) return NULL;
    list->container = con;
    e_object_ref(E_OBJECT(con));
    list->layer = 0;
@@ -829,9 +826,9 @@
 EAPI E_Border_List *
 e_container_border_list_last(E_Container *con)
 {
-   E_Border_List *list;
-   list = E_NEW(E_Border_List, 1);
-   if (!list) return NULL;
+   E_Border_List *list = NULL;
+
+   if (!(list = E_NEW(E_Border_List, 1))) return NULL;
    list->container = con;
    e_object_ref(E_OBJECT(con));
    list->layer = 6;
@@ -867,7 +864,7 @@
    E_Border *bd;
 
    if (!list->clients) return NULL;
-   
+
    bd = list->clients->data;
 
    list->clients = list->clients->prev;
@@ -891,18 +888,18 @@
 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);
          }
@@ -913,18 +910,18 @@
 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);
          }
@@ -978,18 +975,18 @@
 _e_container_find_by_event_window(Ecore_X_Window win)
 {
    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;
             if (con->event_win == win) return con;
          }
@@ -1042,7 +1039,7 @@
    Ecore_X_Event_Mouse_In *ev;
    E_Border *bd;
    E_Container *con;
-   
+
    ev = event;
    con = _e_container_find_by_event_window(ev->event_win);
    if (con)
@@ -1060,7 +1057,7 @@
 {
    Ecore_X_Event_Mouse_Out *ev;
    E_Container *con;
-   
+
    ev = event;
    con = _e_container_find_by_event_window(ev->event_win);
    if (con)
@@ -1076,7 +1073,7 @@
 {
    Ecore_X_Event_Mouse_Button_Down *ev;
    E_Container *con;
-   
+
    ev = event;
    con = _e_container_find_by_event_window(ev->event_win);
    if (con)
@@ -1098,7 +1095,7 @@
 {
    Ecore_X_Event_Mouse_Button_Up *ev;
    E_Container *con;
-   
+
    ev = event;
    con = _e_container_find_by_event_window(ev->event_win);
    if (con)
@@ -1116,7 +1113,7 @@
 {
    Ecore_X_Event_Mouse_Move *ev;
    E_Container *con;
-   
+
    ev = event;
    con = _e_container_find_by_event_window(ev->event_win);
    if (con)
@@ -1132,7 +1129,7 @@
 {
    Ecore_X_Event_Mouse_Wheel *ev;
    E_Container *con;
-   
+
    ev = event;
    con = _e_container_find_by_event_window(ev->event_win);
    if (con)
@@ -1146,7 +1143,7 @@
      }
    return 1;
 }
-   
+
 static void
 _e_container_shape_del(E_Container_Shape *es)
 {
@@ -1156,7 +1153,7 @@
 static void
 _e_container_shape_free(E_Container_Shape *es)
 {
-   Evas_List *l;
+   Evas_List *l = NULL;
 
    es->con->shapes = evas_list_remove(es->con->shapes, es);
    for (l = es->shape; l; l = l->next)
@@ -1168,13 +1165,14 @@
 static void
 _e_container_shape_change_call(E_Container_Shape *es, E_Container_Shape_Change 
ch)
 {
-   Evas_List *l;
-   
+   Evas_List *l = NULL;
+
+   if ((!es) || (!es->con) || (!es->con->shape_change_cb)) return;
    for (l = es->con->shape_change_cb; l; l = l->next)
      {
        E_Container_Shape_Callback *cb;
-       
-       cb = l->data;
+
+       if (!(cb = l->data)) continue;
        cb->func(cb->data, es, ch);
      }
 }
@@ -1185,14 +1183,14 @@
    E_Event_Container_Resize *ev;
    Evas_List *l, *screens, *zones = NULL;
    int i;
-   
+
    ev = calloc(1, sizeof(E_Event_Container_Resize));
    ev->container = con;
    e_object_ref(E_OBJECT(con));
-   
+
    e_xinerama_update();
    screens = (Evas_List *)e_xinerama_screens_get();
-   
+
    if (screens)
      {
        for (l = con->zones; l; l = l->next)
@@ -1201,7 +1199,7 @@
          {
             E_Screen *scr;
             E_Zone *zone;
-            
+
             scr = l->data;
             zone = e_container_zone_id_get(con, scr->escreen);
             if (zone)
@@ -1213,13 +1211,13 @@
             else
               {
                  Evas_List *ll;
-                 
+
                  zone = e_zone_new(con, scr->screen, scr->escreen, scr->x, 
scr->y, scr->w, scr->h);
                  /* find any shelves configured for this zone and add them in 
*/
                  for (ll = e_config->shelves; ll; ll = ll->next)
                    {
                       E_Config_Shelf *cf_es;
-                      
+
                       cf_es = ll->data;
                       if (e_util_container_zone_id_get(cf_es->container, 
cf_es->zone) == zone)
                         e_shelf_config_new(zone, cf_es);
@@ -1230,7 +1228,7 @@
          {
             E_Zone *spare_zone = NULL;
             Evas_List *ll;
-            
+
             for (ll = con->zones; ll; ll = ll->next)
               {
                  spare_zone = ll->data;
@@ -1244,7 +1242,7 @@
                  Evas_List *shelves, *ll, *del_shelves;
                  E_Border_List *bl;
                  E_Border *bd;
-                 
+
                  zone = zones->data;
                  /* delete any shelves on this zone */
                  shelves = e_shelf_list();
@@ -1252,7 +1250,7 @@
                  for (ll = shelves; ll; ll = ll->next)
                    {
                       E_Shelf *es;
-                      
+
                       es = ll->data;
                       if (es->zone == zone)
                         del_shelves = evas_list_append(del_shelves, es);
@@ -1283,14 +1281,14 @@
    else
      {
        E_Zone *zone;
-       
+
        zone = e_container_zone_number_get(con, 0);
        e_zone_move_resize(zone, 0, 0, con->w, con->h);
        e_shelf_zone_move_resize_handle(zone);  
      }
-   
+
    ecore_event_add(E_EVENT_CONTAINER_RESIZE, ev, 
_e_container_event_container_resize_free, NULL);
-   
+
    for (i = 0; i < 7; i++)
      {
        Evas_List *tmp = NULL;
@@ -1317,7 +1315,7 @@
 _e_container_event_container_resize_free(void *data, void *ev)
 {
    E_Event_Container_Resize *e;
-   
+
    e = ev;
    e_object_unref(E_OBJECT(e->container));
    free(e);



-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to