X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fplugins%2Fmap.c;h=13f986c10e5dd2dbdc22245ff03d0a09483c1408;hp=4f15a946bf5584de49620d105798d11b3da5d222;hb=618983b0bfdc9af2d6dc368570a1911b892b5166;hpb=eff89f2a1c780546bb9a0429ef0465cbece7fe56 diff --git a/src/plugins/map.c b/src/plugins/map.c index 4f15a94..13f986c 100644 --- a/src/plugins/map.c +++ b/src/plugins/map.c @@ -57,6 +57,10 @@ static gboolean _load_tile_cb(gpointer _data) { struct _LoadTileData *data = _data; g_debug("GritsPluginMap: _load_tile_cb start"); + if (data->map->aborted) { + g_debug("GritsPluginMap: _load_tile - aborted"); + return FALSE; + } guint *tex = g_new0(guint, 1); glGenTextures(1, tex); @@ -68,12 +72,13 @@ static gboolean _load_tile_cb(gpointer _data) (data->alpha ? GL_RGBA : GL_RGB), GL_UNSIGNED_BYTE, data->pixels); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glFlush(); data->tile->data = tex; - gtk_widget_queue_draw(GTK_WIDGET(data->map->viewer)); + if (data->map->viewer) + gtk_widget_queue_draw(GTK_WIDGET(data->map->viewer)); g_free(data->pixels); g_free(data); return FALSE; @@ -189,7 +194,6 @@ GritsPluginMap *grits_plugin_map_new(GritsViewer *viewer) map->viewer = g_object_ref(viewer); /* Load initial tiles */ - _load_tile(map->tiles, map); _update_tiles(NULL, map); /* Connect signals */ @@ -244,6 +248,7 @@ static void grits_plugin_map_dispose(GObject *gobject) map->viewer = NULL; g_signal_handler_disconnect(viewer, map->sigid); grits_viewer_remove(viewer, GRITS_OBJECT(map->tiles)); + g_object_unref(map->tiles); soup_session_abort(map->tms->http->soup); //soup_session_abort(map->wms->http->soup); g_thread_pool_free(map->threads, TRUE, TRUE);