X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fplugins%2Felev.c;h=2d49551f97ef8ee4cb818e8456fdaae8335a94ea;hb=ff72b493deceef82d583d50c478857ebf3bd0a17;hp=251ec74471ea0808c4f0cf2dc9d893d470fd3425;hpb=f383c18c9f85a1b439c6bfb2a27d652278ed019a;p=grits diff --git a/src/plugins/elev.c b/src/plugins/elev.c index 251ec74..2d49551 100644 --- a/src/plugins/elev.c +++ b/src/plugins/elev.c @@ -25,7 +25,6 @@ * greyscale elevation overlay on the planets surface. */ -#include #include #include @@ -33,7 +32,7 @@ #include "elev.h" -#define MAX_RESOLUTION 500 +#define MAX_RESOLUTION 50 #define TILE_WIDTH 1024 #define TILE_HEIGHT 512 #define TILE_SIZE (TILE_WIDTH*TILE_HEIGHT*sizeof(guint16)) @@ -205,6 +204,7 @@ static void _load_tile(GritsTile *tile, gpointer _elev) struct _LoadTileData *load = g_new0(struct _LoadTileData, 1); load->path = grits_wms_fetch(elev->wms, tile, GRITS_ONCE, NULL, NULL); + if (!load->path) return; // Canceled/error g_debug("GritsPluginElev: _load_tile: %s", load->path); load->elev = elev; load->tile = tile; @@ -328,7 +328,7 @@ static void grits_plugin_elev_init(GritsPluginElev *elev) elev->mutex = g_mutex_new(); elev->tiles = grits_tile_new(NULL, NORTH, SOUTH, EAST, WEST); elev->wms = grits_wms_new( - "http://www.nasa.network.com/elev", "srtm30", "application/bil", + "http://www.nasa.network.com/elev", "mergedSrtm", "application/bil", "srtm/", "bil", TILE_WIDTH, TILE_HEIGHT); } static void grits_plugin_elev_dispose(GObject *gobject) @@ -336,9 +336,11 @@ static void grits_plugin_elev_dispose(GObject *gobject) g_debug("GritsPluginElev: dispose"); GritsPluginElev *elev = GRITS_PLUGIN_ELEV(gobject); /* Drop references */ - if (LOAD_BIL) - grits_viewer_clear_height_func(elev->viewer); if (elev->viewer) { + if (LOAD_BIL) + grits_viewer_clear_height_func(elev->viewer); + if (LOAD_OPENGL) + grits_viewer_remove(elev->viewer, GRITS_OBJECT(elev->tiles)); g_signal_handler_disconnect(elev->viewer, elev->sigid); g_object_unref(elev->viewer); elev->viewer = NULL; @@ -352,6 +354,8 @@ static void grits_plugin_elev_finalize(GObject *gobject) /* Free data */ grits_tile_free(elev->tiles, _free_tile, elev); grits_wms_free(elev->wms); + g_mutex_lock(elev->mutex); + g_mutex_unlock(elev->mutex); g_mutex_free(elev->mutex); G_OBJECT_CLASS(grits_plugin_elev_parent_class)->finalize(gobject);