X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fgis-opengl.c;h=866eac8c15f67e6dc7ec89a557c11ee8e645ff27;hb=6ed798102c4b8c630188f1683e040e5d25128370;hp=60ed8218304af8c790a2160d55c95272155bff8b;hpb=7197168828b6d4cf8015c1b57edca6f81ea300c2;p=grits diff --git a/src/gis-opengl.c b/src/gis-opengl.c index 60ed821..866eac8 100644 --- a/src/gis-opengl.c +++ b/src/gis-opengl.c @@ -399,6 +399,8 @@ void gis_opengl_begin(GisOpenGL *self) { g_assert(GIS_IS_OPENGL(self)); + gdk_threads_enter(); + GdkGLContext *glcontext = gtk_widget_get_gl_context(GTK_WIDGET(self)); GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self)); @@ -450,7 +452,8 @@ static void gis_opengl_init(GisOpenGL *self) g_object_set(self, "can-focus", TRUE, NULL); #ifndef ROAM_DEBUG - self->sm_source = g_timeout_add_full(G_PRIORITY_HIGH_IDLE+30, 33, (GSourceFunc)on_idle, self, NULL); + self->sm_source[0] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE+30, 33, (GSourceFunc)on_idle, self, NULL); + self->sm_source[1] = g_timeout_add_full(G_PRIORITY_HIGH_IDLE+10, 500, (GSourceFunc)on_idle, self, NULL); #endif g_signal_connect(self, "realize", G_CALLBACK(on_realize), NULL); @@ -472,9 +475,13 @@ static void gis_opengl_dispose(GObject *_self) { g_debug("GisOpenGL: dispose"); GisOpenGL *self = GIS_OPENGL(_self); - if (self->sm_source) { - g_source_remove(self->sm_source); - self->sm_source = 0; + if (self->sm_source[0]) { + g_source_remove(self->sm_source[0]); + self->sm_source[0] = 0; + } + if (self->sm_source[1]) { + g_source_remove(self->sm_source[1]); + self->sm_source[1] = 0; } if (self->sphere) { roam_sphere_free(self->sphere);