char *dir = g_path_get_dirname(radar_file);
char *site = g_path_get_basename(dir);
g_free(dir);
- RSL_read_these_sweeps("all", NULL);
- if (self->cur_radar) {
- g_debug("AWeatherRadar: load_radar - Freeing old radar");
- RSL_free_radar(self->cur_radar);
- }
g_debug("AWeatherRadar: load_radar - Loading new radar");
+ RSL_read_these_sweeps("all", NULL);
Radar *radar = self->cur_radar = RSL_wsr88d_to_radar(radar_file, site);
if (radar == NULL) {
g_warning("fail to load radar: path=%s, site=%s", radar_file, site);
gchar *radar_file;
} decompressed_t;
-static void decompressed_cb(GPid pid, gint status, gpointer _self)
+static void decompressed_cb(GPid pid, gint status, gpointer _udata)
{
- decompressed_t *udata = _self;
+ decompressed_t *udata = _udata;
if (status != 0) {
g_warning("wsr88ddec exited with status %d", status);
return;
}
- // TODO: pass cur_file as params?
load_radar(udata->self, udata->radar_file);
+ g_spawn_close_pid(pid);
g_free(udata->radar_file);
g_free(udata);
}
char *base = "http://mesonet.agron.iastate.edu/data/";
char *path = g_strdup_printf("nexrd2/raw/K%s/K%s_%s", site, site, time);
+ /* Clear out children */
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(self->config_body));
+ if (child)
+ gtk_widget_destroy(child);
+ gtk_container_add(GTK_CONTAINER(self->config_body),
+ gtk_label_new("Loading radar..."));
+ gtk_widget_show_all(self->config_body);
+ if (self->cur_radar)
+ RSL_free_radar(self->cur_radar);
self->cur_radar = NULL;
- self->cur_sweep = NULL; // Clear radar
+ self->cur_sweep = NULL;
aweather_gui_gl_redraw(self->gui);
+ /* Start loading the new radar */
cache_file(base, path, AWEATHER_AUTOMATIC, cached_cb, self);
g_free(path);
}
g_free(time);
}
-static void on_refresh(AWeatherView *view, gpointer user_data, gpointer _self)
+static void on_refresh(AWeatherView *view, gpointer _self)
{
AWeatherRadar *self = AWEATHER_RADAR(_self);
char *site = aweather_view_get_site(view);