[grits] Reentrant dispose functions for sat and map



commit eff89f2a1c780546bb9a0429ef0465cbece7fe56
Author: Andy Spencer <andy753421 gmail com>
Date:   Sun Feb 12 06:17:28 2012 +0000

    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);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]