From eff89f2a1c780546bb9a0429ef0465cbece7fe56 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Sun, 12 Feb 2012 06:17:28 +0000 Subject: [PATCH] Reentrant dispose functions for sat and map --- src/plugins/map.c | 9 +++++---- src/plugins/sat.c | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/plugins/map.c b/src/plugins/map.c index d129767..4f15a94 100644 --- a/src/plugins/map.c +++ b/src/plugins/map.c @@ -240,15 +240,16 @@ static void grits_plugin_map_dispose(GObject *gobject) map->aborted = TRUE; /* Drop references */ if (map->viewer) { - g_signal_handler_disconnect(map->viewer, map->sigid); - grits_viewer_remove(map->viewer, GRITS_OBJECT(map->tiles)); + GritsViewer *viewer = map->viewer; + map->viewer = NULL; + g_signal_handler_disconnect(viewer, map->sigid); + grits_viewer_remove(viewer, GRITS_OBJECT(map->tiles)); soup_session_abort(map->tms->http->soup); //soup_session_abort(map->wms->http->soup); g_thread_pool_free(map->threads, TRUE, TRUE); while (gtk_events_pending()) gtk_main_iteration(); - g_object_unref(map->viewer); - map->viewer = NULL; + g_object_unref(viewer); } G_OBJECT_CLASS(grits_plugin_map_parent_class)->dispose(gobject); } diff --git a/src/plugins/sat.c b/src/plugins/sat.c index 1c738d9..0d4f0cb 100644 --- a/src/plugins/sat.c +++ b/src/plugins/sat.c @@ -219,14 +219,15 @@ static void grits_plugin_sat_dispose(GObject *gobject) sat->aborted = TRUE; /* Drop references */ if (sat->viewer) { - g_signal_handler_disconnect(sat->viewer, sat->sigid); - grits_viewer_remove(sat->viewer, GRITS_OBJECT(sat->tiles)); + GritsViewer *viewer = sat->viewer; + sat->viewer = NULL; + g_signal_handler_disconnect(viewer, sat->sigid); + grits_viewer_remove(viewer, GRITS_OBJECT(sat->tiles)); soup_session_abort(sat->wms->http->soup); g_thread_pool_free(sat->threads, TRUE, TRUE); while (gtk_events_pending()) gtk_main_iteration(); - g_object_unref(sat->viewer); - sat->viewer = NULL; + g_object_unref(viewer); } G_OBJECT_CLASS(grits_plugin_sat_parent_class)->dispose(gobject); } -- 2.43.2