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;
_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",
{
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);
}