]> Pileus Git - grits/blobdiff - src/plugins/bmng.c
Cleanup memory on exit
[grits] / src / plugins / bmng.c
index 648b9ba620ea3d78a2efd7ceb44effc7a3e56cc3..e8ec5025995af61a186ba29ee3260198b703fcc5 100644 (file)
@@ -143,7 +143,7 @@ GisPluginBmng *gis_plugin_bmng_new(GisViewer *viewer)
 {
        g_debug("GisPluginBmng: new");
        GisPluginBmng *self = g_object_new(GIS_TYPE_PLUGIN_BMNG, NULL);
-       self->viewer = viewer;
+       self->viewer = g_object_ref(viewer);
 
        /* Load initial tiles */
        _load_tile(self->tiles, self);
@@ -190,7 +190,11 @@ static void gis_plugin_bmng_dispose(GObject *gobject)
        g_debug("GisPluginBmng: dispose");
        GisPluginBmng *self = GIS_PLUGIN_BMNG(gobject);
        /* Drop references */
-       g_signal_handler_disconnect(self->viewer, self->sigid);
+       if (self->viewer) {
+               g_signal_handler_disconnect(self->viewer, self->sigid);
+               g_object_unref(self->viewer);
+               self->viewer = NULL;
+       }
        G_OBJECT_CLASS(gis_plugin_bmng_parent_class)->dispose(gobject);
 }
 static void gis_plugin_bmng_finalize(GObject *gobject)