Elm Map : some fix. "Show paris" wich is a zoom to 18 segv.
authorJonathan Atton <jonathan.atton@gmail.com>
Sat, 14 Nov 2009 13:58:22 +0000 (13:58 +0000)
committerJonathan Atton <jonathan.atton@gmail.com>
Sat, 14 Nov 2009 13:58:22 +0000 (13:58 +0000)
SVN revision: 43690

src/bin/test_map.c
src/lib/elm_map.c

index 480f196..93fb669 100644 (file)
@@ -112,7 +112,7 @@ my_map_scroll(void *data, Evas_Object *obj, void *event_info)
    Evas_Object *win = data;
    double lon, lat;
    elm_map_geo_region_get(obj, &lat, &lon);
-   //printf("scroll latitude : %f longitude : %f\n", lat, lon);
+   printf("scroll latitude : %f longitude : %f\n", lat, lon);
 }
 
 static void
@@ -130,7 +130,7 @@ my_bt_show_reg(void *data, Evas_Object *obj, void *event_info)
 {
    elm_map_paused_set(data, EINA_TRUE);
    elm_map_zoom_set(data, 18);
-   elm_map_geo_region_show(data, 48.857, 2.352);
+   //elm_map_geo_region_show(data, 48.857, 2.352);
 }
 
 static void
index 82ffd74..fbdae0b 100644 (file)
@@ -62,6 +62,7 @@ struct _Grid_Item
 {
    Widget_Data *wd;
    Evas_Object *img;
+   const char *file;
    struct
      {
        int x, y, w, h;
@@ -70,6 +71,7 @@ struct _Grid_Item
    Eina_Bool download : 1;
    Eina_Bool have : 1;
    Ecore_File_Download_Job *job;
+   int try_num;
 };
 
 struct _Grid
@@ -234,10 +236,14 @@ grid_clear(Evas_Object *obj, Grid *g)
 
        if(gi->job)
          {
-            DBG("DOWNLOAD abort %d", wd->preload_num);
+            DBG("DOWNLOAD abort %s", gi->file);
             ecore_file_download_abort(gi->job);
+            remove(gi->file);
             gi->job = NULL;
          }
+       if(gi->file)
+         eina_stringshare_del(gi->file);
+
        free(gi);
      }
    eina_matrixsparse_free(g->grid);
@@ -246,15 +252,6 @@ grid_clear(Evas_Object *obj, Grid *g)
    g->gh = 0;
 }
 
-static int
-_tile_dl_progress(void *data, const char *file,
-                                            long int dltotal, long int dlnow,
-                                            long int ultotal, long int ulnow)
-{
-       //printf("PROGREES %s\n", file);
-       return 0;
-}
-
    static void
 _tile_downloaded(void *data, const char *file, int status)
 {
@@ -263,8 +260,8 @@ _tile_downloaded(void *data, const char *file, int status)
    gi->download = EINA_FALSE;
    gi->job = NULL;
 
-   DBG("DOWNLOAD done %d %s", gi->wd->preload_num, file);
-   if (gi->want)
+   DBG("DOWNLOAD done %s", gi->file);
+   if (gi->want && !status)
      {
        gi->want = EINA_FALSE;
        evas_object_image_file_set(gi->img, file, NULL);
@@ -279,6 +276,11 @@ _tile_downloaded(void *data, const char *file, int status)
             evas_object_smart_callback_call(gi->wd->obj, "loaded,detail", NULL);
          }
      }
+
+   if(status)
+     {
+       DBG("Download failed (%d) %s", status, gi->file);
+     }
 }
 
    static Grid *
@@ -329,7 +331,7 @@ grid_load(Evas_Object *obj, Grid *g)
    size = g->tsize;
    if ((gw != g->w) && (g->w > 0))
      size = ((long long)gw * size) / g->w;
-   if(size < 128) return; // else we will load to much tiles
+   if(size < g->tsize / 2) return; // else we will load to much tiles
 
 
    it = eina_matrixsparse_iterator_new(g->grid);
@@ -375,10 +377,12 @@ grid_load(Evas_Object *obj, Grid *g)
 
                  if(gi->job)
                    {
-                      DBG("DOWNLOAD abort %d", wd->preload_num);
+                      DBG("DOWNLOAD abort %s", gi->file);
                       ecore_file_download_abort(gi->job);
+                      remove(gi->file);
                       gi->job = NULL;
                    }
+                 gi->download = EINA_FALSE;
               }
             else if (gi->have)
               {
@@ -455,11 +459,13 @@ grid_load(Evas_Object *obj, Grid *g)
                  snprintf(buf, PATH_MAX, SOURCE_PATH,
                        g->zoom, x, y);
 
+                 if(gi->file)
+                   eina_stringshare_del(gi->file);
+                 gi->file = eina_stringshare_add(buf2);
 
                  if(ecore_file_exists(buf2) || g == eina_list_data_get(wd->grids))
                    {
                       gi->download = EINA_TRUE;
-                      DBG("DOWNLOAD %d %s \n\t in %s", wd->preload_num, buf, buf2);
                       wd->preload_num++;
                       if (wd->preload_num == 1)
                         {
@@ -469,10 +475,11 @@ grid_load(Evas_Object *obj, Grid *g)
                         }
 
                       if(ecore_file_exists(buf2))
-                        _tile_downloaded(gi, buf2, EINA_TRUE);
+                        _tile_downloaded(gi, buf2, 0);
                       else
                         {
-                           ecore_file_download(buf, buf2, _tile_downloaded, _tile_dl_progress, gi, &(gi->job));
+                           DBG("DOWNLOAD %d %s \t in %s", wd->preload_num, buf, buf2);
+                           ecore_file_download(buf, buf2, _tile_downloaded, NULL, gi, &(gi->job));
                            if(!gi->job)
                              DBG("Can't start to download %s", buf);
                         }
@@ -631,7 +638,6 @@ _long_press(void *data)
    static void
 _mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
-   printf("WOUSE DOWN\n");
    Widget_Data *wd = elm_widget_data_get(data);
    Evas_Event_Mouse_Down *ev = event_info;
    if (ev->button != 1) return;