X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fplugins%2Fradar.c;h=94b18c6cbc613e602ba9d0f75af196b67f5f9733;hb=ba4b91f8cb014e34b496070aeb806415c363434f;hp=dd57984e9003939e22bd809366384df28e7a293a;hpb=3211eaca2b7a580cd34d08ed34425c4da295ba59;p=aweather diff --git a/src/plugins/radar.c b/src/plugins/radar.c index dd57984..94b18c6 100644 --- a/src/plugins/radar.c +++ b/src/plugins/radar.c @@ -283,9 +283,8 @@ 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*0.75*site->city->lod; @@ -313,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", @@ -778,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); }