X-Git-Url: http://pileus.org/git/?p=aweather;a=blobdiff_plain;f=src%2Fplugins%2Fradar.c;h=94b18c6cbc613e602ba9d0f75af196b67f5f9733;hp=9d39dd00a0d21c14ded71b2178201f41dd75a2ef;hb=ba4b91f8cb014e34b496070aeb806415c363434f;hpb=b7cd91211f8fd12d13c67e6167c133dc8c4e3c8f diff --git a/src/plugins/radar.c b/src/plugins/radar.c index 9d39dd0..94b18c6 100644 --- a/src/plugins/radar.c +++ b/src/plugins/radar.c @@ -182,7 +182,7 @@ gpointer _site_update_thread(gpointer _site) } grits_object_hide(GRITS_OBJECT(site->level2), site->hidden); grits_viewer_add(site->viewer, GRITS_OBJECT(site->level2), - GRITS_LEVEL_WORLD+1, TRUE); + GRITS_LEVEL_WORLD+3, TRUE); out: g_idle_add(_site_update_end, site); @@ -283,12 +283,11 @@ void _site_on_location_changed(GritsViewer *viewer, radar_site_unload(site); } -gboolean _site_add_marker(gpointer _site) +gboolean _site_add_marker(RadarSite *site) { - RadarSite *site = _site; site->marker = grits_marker_new(site->city->name); GRITS_OBJECT(site->marker)->center = site->city->pos; - GRITS_OBJECT(site->marker)->lod = EARTH_R*site->city->lod; + GRITS_OBJECT(site->marker)->lod = EARTH_R*0.75*site->city->lod; grits_viewer_add(site->viewer, GRITS_OBJECT(site->marker), GRITS_LEVEL_OVERLAY, FALSE); return FALSE; @@ -305,6 +304,7 @@ RadarSite *radar_site_new(city_t *city, GtkWidget *pconfig, "level2" G_DIR_SEPARATOR_S); site->city = city; site->pconfig = pconfig; + site->hidden = TRUE; /* Set initial location */ gdouble lat, lon, elev; @@ -312,7 +312,7 @@ RadarSite *radar_site_new(city_t *city, GtkWidget *pconfig, _site_on_location_changed(viewer, lat, lon, elev, site); /* Add marker */ - g_idle_add_full(G_PRIORITY_LOW, _site_add_marker, site, NULL); + _site_add_marker(site); /* Connect signals */ site->location_id = g_signal_connect(viewer, "location-changed", @@ -426,7 +426,7 @@ static void _conus_update_end_split(guchar *pixels, guchar *west, guchar *east, dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; - dst[3] = 0xff; + dst[3] = 0xff * 0.75; for (int j = 0; j < G_N_ELEMENTS(alphamap); j++) if (src[0] == alphamap[j][0] && src[1] == alphamap[j][1] && @@ -571,8 +571,8 @@ RadarConus *radar_conus_new(GtkWidget *pconfig, conus->tile[1] = grits_tile_new(NULL, CONUS_NORTH, south, east, mid); conus->tile[0]->zindex = 2; conus->tile[1]->zindex = 1; - grits_viewer_add(viewer, GRITS_OBJECT(conus->tile[0]), GRITS_LEVEL_WORLD, TRUE); - grits_viewer_add(viewer, GRITS_OBJECT(conus->tile[1]), GRITS_LEVEL_WORLD, TRUE); + grits_viewer_add(viewer, GRITS_OBJECT(conus->tile[0]), GRITS_LEVEL_WORLD+2, FALSE); + grits_viewer_add(viewer, GRITS_OBJECT(conus->tile[1]), GRITS_LEVEL_WORLD+2, FALSE); conus->time_id = g_signal_connect_swapped(viewer, "time-changed", G_CALLBACK(_conus_update), conus); @@ -777,9 +777,13 @@ static void grits_plugin_radar_dispose(GObject *gobject) { g_debug("GritsPluginRadar: dispose"); GritsPluginRadar *self = GRITS_PLUGIN_RADAR(gobject); - g_signal_handler_disconnect(self->config, self->tab_id); - grits_viewer_remove(self->viewer, GRITS_OBJECT(self->hud)); - radar_conus_free(self->conus); + if (self->viewer) { + GritsViewer *viewer = self->viewer; + self->viewer = NULL; + g_signal_handler_disconnect(self->config, self->tab_id); + grits_viewer_remove(viewer, GRITS_OBJECT(self->hud)); + radar_conus_free(self->conus); + } /* Drop references */ G_OBJECT_CLASS(grits_plugin_radar_parent_class)->dispose(gobject); }