]> Pileus Git - grits/commitdiff
Reentrant dispose functions for sat and map
authorAndy Spencer <andy753421@gmail.com>
Sun, 12 Feb 2012 06:17:28 +0000 (06:17 +0000)
committerAndy Spencer <andy753421@gmail.com>
Sun, 12 Feb 2012 07:01:11 +0000 (07:01 +0000)
src/plugins/map.c
src/plugins/sat.c

index d1297670385242039c47d3009076e3a4dcfacb99..4f15a946bf5584de49620d105798d11b3da5d222 100644 (file)
@@ -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);
 }
index 1c738d90c620ad0f31caacb65b567bee71b1e20a..0d4f0cb26f0f20af02eab00664f54302b40e40c1 100644 (file)
@@ -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);
 }