X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fgrits-opengl.c;fp=src%2Fgrits-opengl.c;h=49a9c533015d9413c5f9d28fb67aae432beafb71;hp=709e6ed80976b2d8be22bcf20537f31511651e54;hb=fca66641b8505a51767d0c249194f25da0823716;hpb=fb8e4db7bd22e6723a6e22b8f5de52d5c8bcc334 diff --git a/src/grits-opengl.c b/src/grits-opengl.c index 709e6ed..49a9c53 100644 --- a/src/grits-opengl.c +++ b/src/grits-opengl.c @@ -593,7 +593,7 @@ static void _objects_free(gpointer value, gpointer _) g_free(level); } -static gpointer grits_opengl_add(GritsViewer *_opengl, GritsObject *object, +static void grits_opengl_add(GritsViewer *_opengl, GritsObject *object, gint num, gboolean sort) { g_assert(GRITS_IS_OPENGL(_opengl)); @@ -617,26 +617,22 @@ static gpointer grits_opengl_add(GritsViewer *_opengl, GritsObject *object, if (list->next) list->next->prev = link; list->next = link; + object->ref = link; g_mutex_unlock(&opengl->objects_lock); - return link; } -static GritsObject *grits_opengl_remove(GritsViewer *_opengl, GritsObject *object) +void grits_opengl_remove(GritsViewer *_opengl, GritsObject *object) { g_assert(GRITS_IS_OPENGL(_opengl)); GritsOpenGL *opengl = GRITS_OPENGL(_opengl); - GList *link = object->ref; g_mutex_lock(&opengl->objects_lock); + GList *link = object->ref; /* 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; + g_mutex_unlock(&opengl->objects_lock); } /****************