]> git.street.me.uk Git - andy/viking.git/commitdiff
Merge 'thread-pool' features from Jocelyn Jaubert
authorGuilhem Bonnefille <guilhem.bonnefille@gmail.com>
Wed, 6 May 2009 20:07:56 +0000 (22:07 +0200)
committerGuilhem Bonnefille <guilhem.bonnefille@gmail.com>
Wed, 6 May 2009 20:07:56 +0000 (22:07 +0200)
1  2 
src/vikmapslayer.c

diff --combined src/vikmapslayer.c
index 9c6ce07fc82a1a937c64b2a1caf95be22371023a,efe5b6b8c5c16e9f78b0c0bfca9cc73228d8da26..9c9e2904a60f3c691f6c3141b418719357ae9422
@@@ -117,7 -117,7 +117,7 @@@ static VikLayerParamScale params_scales
  
  VikLayerParam maps_layer_params[] = {
    { "mode", VIK_LAYER_PARAM_UINT, VIK_LAYER_GROUP_NONE, N_("Map Type:"), VIK_LAYER_WIDGET_RADIOGROUP, NULL, NULL },
 -  { "directory", VIK_LAYER_PARAM_STRING, VIK_LAYER_GROUP_NONE, N_("Maps Directory (Optional):"), VIK_LAYER_WIDGET_FILEENTRY },
 +  { "directory", VIK_LAYER_PARAM_STRING, VIK_LAYER_GROUP_NONE, N_("Maps Directory:"), VIK_LAYER_WIDGET_FOLDERENTRY },
    { "alpha", VIK_LAYER_PARAM_UINT, VIK_LAYER_GROUP_NONE, N_("Alpha:"), VIK_LAYER_WIDGET_HSCALE, params_scales },
    { "autodownload", VIK_LAYER_PARAM_BOOLEAN, VIK_LAYER_GROUP_NONE, N_("Autodownload maps:"), VIK_LAYER_WIDGET_CHECKBUTTON },
    { "mapzoom", VIK_LAYER_PARAM_UINT, VIK_LAYER_GROUP_NONE, N_("Zoom Level:"), VIK_LAYER_WIDGET_COMBOBOX, params_mapzooms },
@@@ -405,7 -405,7 +405,7 @@@ static VikLayerParamData maps_layer_get
    VikLayerParamData rv;
    switch ( id )
    {
 -    case PARAM_CACHE_DIR: rv.s = (vml->cache_dir && strcmp(vml->cache_dir, MAPS_CACHE_DIR) != 0) ? vml->cache_dir : ""; break;
 +    case PARAM_CACHE_DIR: rv.s = vml->cache_dir ? vml->cache_dir : ""; break;
      case PARAM_MAPTYPE: rv.u = map_index_to_uniq_id ( vml->maptype ); break;
      case PARAM_ALPHA: rv.u = vml->alpha; break;
      case PARAM_AUTODOWNLOAD: rv.u = vml->autodownload; break;
@@@ -774,7 -774,7 +774,7 @@@ static void weak_ref_cb(gpointer ptr, G
    g_mutex_unlock(mdi->mutex);
  }
  
- static void map_download_thread ( MapDownloadInfo *mdi, gpointer threaddata )
+ static int map_download_thread ( MapDownloadInfo *mdi, gpointer threaddata )
  {
    guint donemaps = 0;
    gint x, y;
                       mdi->mapcoord.scale, mdi->mapcoord.z, x, y );
  
        donemaps++;
-       a_background_thread_progress ( threaddata, ((gdouble)donemaps) / mdi->mapstoget ); /* this also calls testcancel */
+       int res = a_background_thread_progress ( threaddata, ((gdouble)donemaps) / mdi->mapstoget ); /* this also calls testcancel */
+       if (res != 0)
+         return -1;
  
        if ( mdi->redownload == REDOWNLOAD_ALL)
          g_remove ( mdi->filename_buf );
    if (mdi->map_layer_alive)
      g_object_weak_unref(G_OBJECT(mdi->vml), weak_ref_cb, mdi);
    g_mutex_unlock(mdi->mutex); 
+   return 0;
  }
  
  static void mdi_cancel_cleanup ( MapDownloadInfo *mdi )