]> Pileus Git - grits/commitdiff
GisViewer: remove begin/end functions
authorAndy Spencer <andy753421@gmail.com>
Sat, 6 Feb 2010 11:37:18 +0000 (11:37 +0000)
committerAndy Spencer <andy753421@gmail.com>
Sat, 6 Feb 2010 11:37:18 +0000 (11:37 +0000)
There's no reason for recreating the OpenGL context all the time, just
create it once at the beginning.

src/gis-opengl.c
src/gis-viewer.c
src/gis-viewer.h
src/plugins/map.c
src/plugins/sat.c

index 1d629574644e8d93a7bafd1768f07b4f6e62083c..0545eb9c86a05df3bddaa158de1a4e456879d7e9 100644 (file)
 /***********
  * Helpers *
  ***********/
-static void _gis_opengl_begin(GisOpenGL *self)
-{
-       g_assert(GIS_IS_OPENGL(self));
-
-       GdkGLContext   *glcontext  = gtk_widget_get_gl_context(GTK_WIDGET(self));
-       GdkGLDrawable  *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
-
-       if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
-               g_assert_not_reached();
-}
-
-static void _gis_opengl_end(GisOpenGL *self)
-{
-       g_assert(GIS_IS_OPENGL(self));
-       GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
-       gdk_gl_drawable_gl_end(gldrawable);
-}
-
 static void _set_visuals(GisOpenGL *self)
 {
        glMatrixMode(GL_MODELVIEW);
@@ -295,7 +277,6 @@ static void _load_object(GisOpenGL *self, GisObject *object)
                gdouble width  = cairo_image_surface_get_width(surface);
                gdouble height = cairo_image_surface_get_height(surface);
 
-               _gis_opengl_begin(self);
                glEnable(GL_TEXTURE_2D);
                glGenTextures(1, &marker->tex);
                glBindTexture(GL_TEXTURE_2D, marker->tex);
@@ -307,7 +288,6 @@ static void _load_object(GisOpenGL *self, GisObject *object)
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                g_debug("load_texture: %d", marker->tex);
-               _gis_opengl_end(self);
        }
 }
 
@@ -336,15 +316,21 @@ struct RenderLevel {
 static void on_realize(GisOpenGL *self, gpointer _)
 {
        g_debug("GisOpenGL: on_realize");
+
+       GdkGLContext   *glcontext  = gtk_widget_get_gl_context(GTK_WIDGET(self));
+       GdkGLDrawable  *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
+       if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
+               g_assert_not_reached();
+
        _set_visuals(self);
        g_mutex_lock(self->sphere_lock);
        roam_sphere_update_errors(self->sphere);
        g_mutex_unlock(self->sphere_lock);
 }
+
 static gboolean on_configure(GisOpenGL *self, GdkEventConfigure *event, gpointer _)
 {
        g_debug("GisOpenGL: on_configure");
-       _gis_opengl_begin(self);
 
        double width  = GTK_WIDGET(self)->allocation.width;
        double height = GTK_WIDGET(self)->allocation.height;
@@ -362,7 +348,6 @@ static gboolean on_configure(GisOpenGL *self, GdkEventConfigure *event, gpointer
        g_mutex_unlock(self->sphere_lock);
 #endif
 
-       _gis_opengl_end(self);
        return FALSE;
 }
 
@@ -397,7 +382,6 @@ static gboolean _draw_level(gpointer key, gpointer value, gpointer user_data)
 static gboolean on_expose(GisOpenGL *self, GdkEventExpose *event, gpointer _)
 {
        g_debug("GisOpenGL: on_expose - begin");
-       _gis_opengl_begin(self);
 
        glClear(GL_COLOR_BUFFER_BIT);
 
@@ -419,7 +403,6 @@ static gboolean on_expose(GisOpenGL *self, GdkEventExpose *event, gpointer _)
        GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
        gdk_gl_drawable_swap_buffers(gldrawable);
 
-       _gis_opengl_end(self);
        g_debug("GisOpenGL: on_expose - end\n");
        return FALSE;
 }
@@ -459,13 +442,11 @@ static void on_view_changed(GisOpenGL *self,
 {
        g_debug("GisOpenGL: on_view_changed");
        gdk_threads_enter();
-       _gis_opengl_begin(self);
        _set_visuals(self);
 #ifndef ROAM_DEBUG
        g_idle_add_full(G_PRIORITY_HIGH_IDLE+30, _update_errors_cb, self->sphere, NULL);
        //roam_sphere_update_errors(self->sphere);
 #endif
-       _gis_opengl_end(self);
        gdk_threads_leave();
 }
 
@@ -473,12 +454,10 @@ static gboolean on_idle(GisOpenGL *self)
 {
        //g_debug("GisOpenGL: on_idle");
        gdk_threads_enter();
-       _gis_opengl_begin(self);
        g_mutex_lock(self->sphere_lock);
        if (roam_sphere_split_merge(self->sphere))
                gtk_widget_queue_draw(GTK_WIDGET(self));
        g_mutex_unlock(self->sphere_lock);
-       _gis_opengl_end(self);
        gdk_threads_leave();
        return TRUE;
 }
@@ -564,18 +543,6 @@ static void gis_opengl_clear_height_func(GisViewer *_self)
                _gis_opengl_clear_height_func_rec(self->sphere->roots[i]);
 }
 
-static void gis_opengl_begin(GisViewer *_self)
-{
-       g_assert(GIS_IS_OPENGL(_self));
-       _gis_opengl_begin(GIS_OPENGL(_self));
-}
-
-static void gis_opengl_end(GisViewer *_self)
-{
-       g_assert(GIS_IS_OPENGL(_self));
-       _gis_opengl_end(GIS_OPENGL(_self));
-}
-
 static gpointer gis_opengl_add(GisViewer *_self, GisObject *object,
                gint key, gboolean sort)
 {
@@ -669,7 +636,7 @@ static void gis_opengl_dispose(GObject *_self)
 }
 static void gis_opengl_finalize(GObject *_self)
 {
-       g_debug("GisViewer: finalize");
+       g_debug("GisOpenGL: finalize");
        GisOpenGL *self = GIS_OPENGL(_self);
        roam_sphere_free(self->sphere);
        g_mutex_free(self->sphere_lock);
@@ -686,8 +653,6 @@ static void gis_opengl_class_init(GisOpenGLClass *klass)
        viewer_class->project           = gis_opengl_project;
        viewer_class->clear_height_func = gis_opengl_clear_height_func;
        viewer_class->set_height_func   = gis_opengl_set_height_func;
-       viewer_class->begin             = gis_opengl_begin;
-       viewer_class->end               = gis_opengl_end;
        viewer_class->add               = gis_opengl_add;
        viewer_class->remove            = gis_opengl_remove;
 }
index e7e772fadbd5c7702c4b8368ef3bfafae7cdc968..1deef53af631a1aa179d7f61d3c751d0095f9ee2 100644 (file)
@@ -271,22 +271,6 @@ void gis_viewer_set_height_func(GisViewer *self, GisTile *tile,
        klass->set_height_func(self, tile, height_func, user_data, update);
 }
 
-void gis_viewer_begin(GisViewer *self)
-{
-       GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self);
-       if (!klass->begin)
-               g_warning("GisViewer: begin - Unimplemented");
-       klass->begin(self);
-}
-
-void gis_viewer_end(GisViewer *self)
-{
-       GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self);
-       if (!klass->end)
-               g_warning("GisViewer: end - Unimplemented");
-       klass->end(self);
-}
-
 gpointer gis_viewer_add(GisViewer *self, GisObject *object,
                gint level, gboolean sort)
 {
index 5e84e439157fb991656f76a0a03d4d98d74a5eca..d22b4da7c101b8e8f74f021219c3e5228a555abe 100644 (file)
@@ -73,9 +73,6 @@ struct _GisViewerClass {
                                  GisHeightFunc height_func, gpointer user_data,
                                  gboolean update);
 
-       void (*begin)            (GisViewer *viewer);
-       void (*end)              (GisViewer *viewer);
-
        gpointer (*add)          (GisViewer *viewer, GisObject *object,
                                  gint level, gboolean sort);
        void (*remove)           (GisViewer *viewer, gpointer ref);
@@ -116,9 +113,6 @@ void gis_viewer_set_height_func(GisViewer *self, GisTile *tile,
                GisHeightFunc height_func, gpointer user_data,
                gboolean update);
 
-void gis_viewer_begin(GisViewer *viewer);
-void gis_viewer_end  (GisViewer *viewer);
-
 gpointer gis_viewer_add(GisViewer *self, GisObject *object,
                gint level, gboolean sort);
 void gis_viewer_remove(GisViewer *self, gpointer ref);
index 27261f147d64cbec54ad3f587c34cf1854694ec7..92cd3761e67ff3e5c7d22c87f0253e9ff652b529 100644 (file)
@@ -71,7 +71,6 @@ static gboolean _load_tile_cb(gpointer _data)
        }
 
        guint *tex = g_new0(guint, 1);
-       gis_viewer_begin(self->viewer);
        glGenTextures(1, tex);
        glBindTexture(GL_TEXTURE_2D, *tex);
 
@@ -84,7 +83,6 @@ static gboolean _load_tile_cb(gpointer _data)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
        glFlush();
-       gis_viewer_end(self->viewer);
 
        tile->data = tex;
        gtk_widget_queue_draw(GTK_WIDGET(self->viewer));
index 5a5208b8ac6380d593b71bd662999019b1e9ceb9..3ddccc8cba64cd40e42d531fe85cef34a802cda0 100644 (file)
@@ -48,7 +48,6 @@ static gboolean _load_tile_cb(gpointer _data)
        gint      height = gdk_pixbuf_get_height(pixbuf);
 
        guint *tex = g_new0(guint, 1);
-       gis_viewer_begin(self->viewer);
        glGenTextures(1, tex);
        glBindTexture(GL_TEXTURE_2D, *tex);
 
@@ -61,7 +60,6 @@ static gboolean _load_tile_cb(gpointer _data)
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
        glFlush();
-       gis_viewer_end(self->viewer);
 
        tile->data = tex;
        gtk_widget_queue_draw(GTK_WIDGET(self->viewer));