]> Pileus Git - grits/commitdiff
Pass objects to grits_viewer_remove instead of refs
authorAndy Spencer <andy753421@gmail.com>
Thu, 27 Oct 2011 05:12:34 +0000 (05:12 +0000)
committerAndy Spencer <andy753421@gmail.com>
Thu, 27 Oct 2011 05:12:34 +0000 (05:12 +0000)
(finally)

src/grits-opengl.c
src/grits-viewer.c
src/grits-viewer.h
src/plugins/elev.c
src/plugins/map.c
src/plugins/sat.c
src/plugins/test.c

index 5e2590bf164ea2d52bef8bb0837b0556ecb5500d..774c75725f02e628945fed7e389cf533e00adc92 100644 (file)
@@ -483,18 +483,19 @@ static gpointer grits_opengl_add(GritsViewer *_opengl, GritsObject *object,
        return link;
 }
 
-static GritsObject *grits_opengl_remove(GritsViewer *_opengl, gpointer _link)
+static GritsObject *grits_opengl_remove(GritsViewer *_opengl, GritsObject *object)
 {
        g_assert(GRITS_IS_OPENGL(_opengl));
        GritsOpenGL *opengl = GRITS_OPENGL(_opengl);
-       GList *link = _link;
+       GList *link = object->ref;
        g_mutex_lock(opengl->objects_lock);
-       GritsObject *object = link->data;
        /* Just unlink and free it, link->prev is assured */
        link->prev->next = link->next;
        if (link->next)
                link->next->prev = link->prev;
        g_mutex_unlock(opengl->objects_lock);
+       object->ref    = NULL;
+       object->viewer = NULL;
        g_free(link);
        g_object_unref(object);
        return object;
index 7d857c48a1172ff7757e286d3d3b46fa9883d310..065e6fcf9fd7e48ea7aa716390c9a8f815e5b7bb 100644 (file)
@@ -542,15 +542,12 @@ gpointer grits_viewer_add(GritsViewer *viewer, GritsObject *object,
  *
  * Returns: the #GritsObject referenced by the handle
  */
-GritsObject *grits_viewer_remove(GritsViewer *viewer, gpointer _object)
+GritsObject *grits_viewer_remove(GritsViewer *viewer, GritsObject *object)
 {
-       GritsObject *object = _object;
        GritsViewerClass *klass = GRITS_VIEWER_GET_CLASS(viewer);
        if (!klass->remove)
                g_warning("GritsViewer: remove - Unimplemented");
-       klass->remove(viewer, object->ref);
-       object->ref    = NULL;
-       object->viewer = NULL;
+       klass->remove(viewer, object);
        return object;
 }
 
index ee1d6133e1ad2a388190e3d91ad0cf629b51247c..3d493e33d4550d255f8c38cd246306685155f1a4 100644 (file)
@@ -133,7 +133,7 @@ struct _GritsViewerClass {
 
        gpointer (*add)          (GritsViewer *viewer, GritsObject *object,
                                  gint level, gboolean sort);
-       GritsObject *(*remove)   (GritsViewer *viewer, gpointer ref);
+       GritsObject *(*remove)   (GritsViewer *viewer, GritsObject *object);
 };
 
 GType grits_viewer_get_type(void);
@@ -173,6 +173,6 @@ void grits_viewer_set_height_func(GritsViewer *viewer, GritsBounds *bounds,
 
 gpointer grits_viewer_add(GritsViewer *viewer, GritsObject *object,
                gint level, gboolean sort);
-GritsObject *grits_viewer_remove(GritsViewer *viewer, gpointer ref);
+GritsObject *grits_viewer_remove(GritsViewer *viewer, GritsObject *object);
 
 #endif
index 6f03e6981ed58ed8ecd60f30acf2224801799225..2d49551f97ef8ee4cb818e8456fdaae8335a94ea 100644 (file)
@@ -340,7 +340,7 @@ static void grits_plugin_elev_dispose(GObject *gobject)
                if (LOAD_BIL)
                        grits_viewer_clear_height_func(elev->viewer);
                if (LOAD_OPENGL)
-                       grits_viewer_remove(elev->viewer, elev->tiles);
+                       grits_viewer_remove(elev->viewer, GRITS_OBJECT(elev->tiles));
                g_signal_handler_disconnect(elev->viewer, elev->sigid);
                g_object_unref(elev->viewer);
                elev->viewer = NULL;
index 7505d45ade93dd53a32fe6d8a6f9faf6bf33278d..9f89890a44771b988d313a005561398e20c1c5c9 100644 (file)
@@ -233,7 +233,7 @@ static void grits_plugin_map_dispose(GObject *gobject)
        /* Drop references */
        if (map->viewer) {
                g_signal_handler_disconnect(map->viewer, map->sigid);
-               grits_viewer_remove(map->viewer, map->tiles);
+               grits_viewer_remove(map->viewer, GRITS_OBJECT(map->tiles));
                soup_session_abort(map->wms->http->soup);
                g_thread_pool_free(map->threads, TRUE, TRUE);
                while (gtk_events_pending())
index f19df1cdba7bc6e15239f35c4448b63f105da47a..e67fe8917318b9bd0604396307316fc89caf7b75 100644 (file)
@@ -221,7 +221,7 @@ static void grits_plugin_sat_dispose(GObject *gobject)
        /* Drop references */
        if (sat->viewer) {
                g_signal_handler_disconnect(sat->viewer, sat->sigid);
-               grits_viewer_remove(sat->viewer, sat->tiles);
+               grits_viewer_remove(sat->viewer, GRITS_OBJECT(sat->tiles));
                soup_session_abort(sat->wms->http->soup);
                g_thread_pool_free(sat->threads, TRUE, TRUE);
                while (gtk_events_pending())
index 2e4cbf81f3a4cd2259833239b9ca2074bc3910f5..44e39d0898253fb90139d1bbb928adaf442c7b57 100644 (file)
@@ -175,7 +175,7 @@ static void grits_plugin_test_dispose(GObject *_test)
        g_debug("GritsPluginTest: dispose");
        GritsPluginTest *test = GRITS_PLUGIN_TEST(_test);
        if (test->viewer) {
-               grits_viewer_remove(test->viewer, test->marker);
+               grits_viewer_remove(test->viewer, GRITS_OBJECT(test->marker));
                g_object_unref(test->viewer);
                test->viewer = NULL;
        }