]> Pileus Git - grits/blobdiff - src/gis-opengl.c
Add better locking in GisOpenGL
[grits] / src / gis-opengl.c
index a70c6a8ebb3e251fda82c3a24ab2b711a514d5af..9f1940bdfdb5d33d177f5e81114546a81a3345fe 100644 (file)
@@ -115,7 +115,9 @@ static void _set_visuals(GisOpenGL *opengl)
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
        //glShadeModel(GL_FLAT);
 
+       g_mutex_lock(opengl->sphere_lock);
        roam_sphere_update_view(opengl->sphere);
+       g_mutex_unlock(opengl->sphere_lock);
 }
 
 
@@ -306,7 +308,9 @@ static void _draw_object(GisOpenGL *opengl, GisObject *object)
        } else if (GIS_IS_TILE(object)) {
                glEnable(GL_DEPTH_TEST);
                glDepthFunc(GL_LESS);
+               g_mutex_lock(opengl->sphere_lock);
                _draw_tiles(opengl, GIS_TILE(object));
+               g_mutex_unlock(opengl->sphere_lock);
        }
        glPopAttrib();
        glMatrixMode(GL_PROJECTION); glPopMatrix();
@@ -478,7 +482,9 @@ static gboolean on_key_press(GisOpenGL *opengl, GdkEventKey *event, gpointer _)
 static gboolean _update_errors_cb(gpointer _opengl)
 {
        GisOpenGL *opengl = _opengl;
+       g_mutex_lock(opengl->sphere_lock);
        roam_sphere_update_errors(opengl->sphere);
+       g_mutex_unlock(opengl->sphere_lock);
        opengl->ue_source = 0;
        return FALSE;
 }