X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fgrits-opengl.c;fp=src%2Fgrits-opengl.c;h=a17ddda235fb2a624633f7f92c095685c66f38d5;hp=49a9c533015d9413c5f9d28fb67aae432beafb71;hb=618983b0bfdc9af2d6dc368570a1911b892b5166;hpb=fca66641b8505a51767d0c249194f25da0823716 diff --git a/src/grits-opengl.c b/src/grits-opengl.c index 49a9c53..a17ddda 100644 --- a/src/grits-opengl.c +++ b/src/grits-opengl.c @@ -618,6 +618,7 @@ static void grits_opengl_add(GritsViewer *_opengl, GritsObject *object, list->next->prev = link; list->next = link; object->ref = link; + g_object_ref(object); g_mutex_unlock(&opengl->objects_lock); } @@ -625,6 +626,8 @@ void grits_opengl_remove(GritsViewer *_opengl, GritsObject *object) { g_assert(GRITS_IS_OPENGL(_opengl)); GritsOpenGL *opengl = GRITS_OPENGL(_opengl); + if (!object->ref) + return; g_mutex_lock(&opengl->objects_lock); GList *link = object->ref; /* Just unlink and free it, link->prev is assured */ @@ -632,6 +635,8 @@ void grits_opengl_remove(GritsViewer *_opengl, GritsObject *object) if (link->next) link->next->prev = link->prev; g_free(link); + object->ref = NULL; + g_object_unref(object); g_mutex_unlock(&opengl->objects_lock); }