Dear all,

I have done 3 jobs in this patch
(1) I have fixed memory leaks in _nominatim_url_cb() function.
(2) Add error handling to see the definite error log because sometimes
evas_object_image_file_set() is failed.
(3) Move zoom_min_get()/zoom_max_get() to source_init() to simplify code.

Please review this patch.

Index: src/lib/elm_map.c
===================================================================
--- src/lib/elm_map.c   (리비전 65632)
+++ src/lib/elm_map.c   (작업 사본)
@@ -700,46 +700,14 @@ source_init(void *data)
      {
         wd->source_names[idx] = strdup(s->name);
         INF("source : %s", wd->source_names[idx]);
+        if (s->zoom_min < wd->zoom_min) wd->zoom_min = s->zoom_min;
+        if (s->zoom_max > wd->zoom_max) wd->zoom_max = s->zoom_max;
         idx++;
      }
    wd->source_names[idx] = NULL;
 }

 static void
-zoom_min_get(void *data)
-{
-   ELM_CHECK_WIDTYPE(data, widtype);
-   Widget_Data *wd = elm_widget_data_get(data);
-   Map_Sources_Tab *s;
-   Eina_List *l;
-   int tz;
-
-   if (!wd) return;
-   EINA_LIST_FOREACH(wd->map_sources_tab, l, s)
-     {
-        tz = s->zoom_min;
-        if (tz < wd->zoom_min) wd->zoom_min = tz;
-     }
-}
-
-static void
-zoom_max_get(void *data)
-{
-   ELM_CHECK_WIDTYPE(data, widtype);
-   Widget_Data *wd = elm_widget_data_get(data);
-   Map_Sources_Tab *s;
-   Eina_List *l;
-   int tz;
-
-   if (!wd) return;
-   EINA_LIST_FOREACH(wd->map_sources_tab, l, s)
-     {
-        tz = s->zoom_max;
-        if (tz > wd->zoom_max) wd->zoom_max = tz;
-     }
-}
-
-static void
 obj_rotate_zoom(void *data, Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(data, widtype);
@@ -1187,21 +1155,21 @@ _tile_update(Grid_Item *gi)
    gi->want = EINA_FALSE;
    gi->download = EINA_FALSE;
    evas_object_image_file_set(gi->img, gi->file, NULL);
-   if (evas_object_image_load_error_get(gi->img) != EVAS_LOAD_ERROR_NONE)
+   Evas_Load_Error err = evas_object_image_load_error_get(gi->img);
+   if (err != EVAS_LOAD_ERROR_NONE)
      {
-        ERR("Image loading error (%s)", gi->file);
+        ERR("Image loading error (%s): %s", gi->file,
evas_load_error_str(err));
         ecore_file_remove(gi->file);
         gi->have = EINA_FALSE;
-        return;
      }
-
-   obj_rotate_zoom(gi->wd->obj, gi->img);
-   evas_object_show(gi->img);
-
-   //evas_object_text_text_set(gi->txt, gi->file);
-   //evas_object_show(gi->txt);
-
-   gi->have = EINA_TRUE;
+   else
+     {
+        obj_rotate_zoom(gi->wd->obj, gi->img);
+        evas_object_show(gi->img);
+        gi->have = EINA_TRUE;
+        //evas_object_text_text_set(gi->txt, gi->file);
+        //evas_object_show(gi->txt);
+     }
 }

 static void
@@ -3190,18 +3158,17 @@ elm_map_add(Evas_Object *parent)
    evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj);

    elm_smart_scroller_bounce_allow_set(wd->scr, bounce, bounce);
+
+   wd->zoom_min = 0xFF;
+   wd->zoom_max = 0X00;
    source_init(obj);

    wd->obj = obj;
    wd->map = evas_map_new(4);
    if (!wd->map) return NULL;

-   wd->zoom_min = 0xFF;
-   wd->zoom_max = 0X00;
    wd->markers_max_num = 30;
    wd->pinch.level = 1.0;
-   zoom_min_get(obj);
-   zoom_max_get(obj);
    wd->markers = calloc(wd->zoom_max + 1, sizeof(void*));

    evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
@@ -5067,6 +5034,12 @@ _nominatim_url_cb(Evas_Object *obj, int
              if (!(idx == (ele-1))) eina_strlcat(search_url, "+",
sizeof(search_url));
           }
         snprintf(buf, sizeof(buf),
"%s/search?q=%s&format=xml&polygon=0&addressdetails=0",
NAME_NOMINATIM_URL, search_url);
+
+        if (str && str[0])
+          {
+             free(str[0]);
+             free(str);
+          }
      }
    else if (method == ELM_MAP_NAME_METHOD_REVERSE) snprintf(buf,
sizeof(buf), "%s/reverse?format=xml&lat=%lf&lon=%lf&zoom=%d&addressdetails=0",
NAME_NOMINATIM_URL, lat, lon, wd->zoom);
    else strcpy(buf, "");


-- 
BRs,
Kim.
Index: src/lib/elm_map.c
===================================================================
--- src/lib/elm_map.c	(리비전 65632)
+++ src/lib/elm_map.c	(작업 사본)
@@ -700,46 +700,14 @@ source_init(void *data)
      {
         wd->source_names[idx] = strdup(s->name);
         INF("source : %s", wd->source_names[idx]);
+        if (s->zoom_min < wd->zoom_min) wd->zoom_min = s->zoom_min;
+        if (s->zoom_max > wd->zoom_max) wd->zoom_max = s->zoom_max;
         idx++;
      }
    wd->source_names[idx] = NULL;
 }
 
 static void
-zoom_min_get(void *data)
-{
-   ELM_CHECK_WIDTYPE(data, widtype);
-   Widget_Data *wd = elm_widget_data_get(data);
-   Map_Sources_Tab *s;
-   Eina_List *l;
-   int tz;
-
-   if (!wd) return;
-   EINA_LIST_FOREACH(wd->map_sources_tab, l, s)
-     {
-        tz = s->zoom_min;
-        if (tz < wd->zoom_min) wd->zoom_min = tz;
-     }
-}
-
-static void
-zoom_max_get(void *data)
-{
-   ELM_CHECK_WIDTYPE(data, widtype);
-   Widget_Data *wd = elm_widget_data_get(data);
-   Map_Sources_Tab *s;
-   Eina_List *l;
-   int tz;
-
-   if (!wd) return;
-   EINA_LIST_FOREACH(wd->map_sources_tab, l, s)
-     {
-        tz = s->zoom_max;
-        if (tz > wd->zoom_max) wd->zoom_max = tz;
-     }
-}
-
-static void
 obj_rotate_zoom(void *data, Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(data, widtype);
@@ -1187,21 +1155,21 @@ _tile_update(Grid_Item *gi)
    gi->want = EINA_FALSE;
    gi->download = EINA_FALSE;
    evas_object_image_file_set(gi->img, gi->file, NULL);
-   if (evas_object_image_load_error_get(gi->img) != EVAS_LOAD_ERROR_NONE)
+   Evas_Load_Error err = evas_object_image_load_error_get(gi->img);
+   if (err != EVAS_LOAD_ERROR_NONE)
      {
-        ERR("Image loading error (%s)", gi->file);
+        ERR("Image loading error (%s): %s", gi->file, evas_load_error_str(err));
         ecore_file_remove(gi->file);
         gi->have = EINA_FALSE;
-        return;
      }
-
-   obj_rotate_zoom(gi->wd->obj, gi->img);
-   evas_object_show(gi->img);
-
-   //evas_object_text_text_set(gi->txt, gi->file);
-   //evas_object_show(gi->txt);
-
-   gi->have = EINA_TRUE;
+   else
+     {
+        obj_rotate_zoom(gi->wd->obj, gi->img);
+        evas_object_show(gi->img);
+        gi->have = EINA_TRUE;
+        //evas_object_text_text_set(gi->txt, gi->file);
+        //evas_object_show(gi->txt);
+     }
 }
 
 static void
@@ -3190,18 +3158,17 @@ elm_map_add(Evas_Object *parent)
    evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj);
 
    elm_smart_scroller_bounce_allow_set(wd->scr, bounce, bounce);
+
+   wd->zoom_min = 0xFF;
+   wd->zoom_max = 0X00;
    source_init(obj);
 
    wd->obj = obj;
    wd->map = evas_map_new(4);
    if (!wd->map) return NULL;
 
-   wd->zoom_min = 0xFF;
-   wd->zoom_max = 0X00;
    wd->markers_max_num = 30;
    wd->pinch.level = 1.0;
-   zoom_min_get(obj);
-   zoom_max_get(obj);
    wd->markers = calloc(wd->zoom_max + 1, sizeof(void*));
 
    evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
@@ -5067,6 +5034,12 @@ _nominatim_url_cb(Evas_Object *obj, int
              if (!(idx == (ele-1))) eina_strlcat(search_url, "+", sizeof(search_url));
           }
         snprintf(buf, sizeof(buf), "%s/search?q=%s&format=xml&polygon=0&addressdetails=0", NAME_NOMINATIM_URL, search_url);
+
+        if (str && str[0])
+          {
+             free(str[0]);
+             free(str);
+          }
      }
    else if (method == ELM_MAP_NAME_METHOD_REVERSE) snprintf(buf, sizeof(buf), "%s/reverse?format=xml&lat=%lf&lon=%lf&zoom=%d&addressdetails=0", NAME_NOMINATIM_URL, lat, lon, wd->zoom);
    else strcpy(buf, "");
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to