static gboolean on_motion_notify(GritsOpenGL *opengl, GdkEventMotion *event, gpointer _)
{
opengl->mouse_queue = *event;
- gtk_widget_queue_draw(GTK_WIDGET(opengl));
+ grits_viewer_queue_draw(GRITS_VIEWER(opengl));
return FALSE;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
#ifndef ROAM_DEBUG
+ g_mutex_lock(&opengl->sphere_lock);
roam_sphere_update_errors(opengl->sphere);
roam_sphere_split_merge(opengl->sphere);
+ g_mutex_unlock(&opengl->sphere_lock);
#endif
#ifdef ROAM_DEBUG
/* Testing */
if (kv == GDK_w) {
opengl->wireframe = !opengl->wireframe;
- gtk_widget_queue_draw(GTK_WIDGET(opengl));
+ grits_viewer_queue_draw(GRITS_VIEWER(opengl));
}
if (kv == GDK_p) {
opengl->pickmode = !opengl->pickmode;
- gtk_widget_queue_draw(GTK_WIDGET(opengl));
+ grits_viewer_queue_draw(GRITS_VIEWER(opengl));
}
#ifdef ROAM_DEBUG
else if (kv == GDK_n) roam_sphere_split_one(opengl->sphere);
else if (kv == GDK_p) roam_sphere_merge_one(opengl->sphere);
else if (kv == GDK_r) roam_sphere_split_merge(opengl->sphere);
else if (kv == GDK_u) roam_sphere_update_errors(opengl->sphere);
- gtk_widget_queue_draw(GTK_WIDGET(opengl));
+ grits_viewer_queue_draw(GRITS_VIEWER(opengl));
#endif
return FALSE;
}
list->next->prev = link;
list->next = link;
object->ref = link;
+ g_object_ref(object);
g_mutex_unlock(&opengl->objects_lock);
}
{
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 */
if (link->next)
link->next->prev = link->prev;
g_free(link);
+ object->ref = NULL;
+ g_object_unref(object);
g_mutex_unlock(&opengl->objects_lock);
}