- g_debug("GritsPluginMap: _load_tile start %p", g_thread_self());
- struct _LoadTileData *data = g_new0(struct _LoadTileData, 1);
- data->map = map;
- data->tile = tile;
- data->path = grits_wms_fetch(map->wms, tile, GRITS_ONCE, NULL, NULL);
- g_idle_add_full(G_PRIORITY_LOW, _load_tile_cb, data, NULL);
- g_debug("GritsPluginMap: _load_tile end %p", g_thread_self());
-}
-
-static gboolean _free_tile_cb(gpointer data)
-{
- glDeleteTextures(1, data);
- g_free(data);
- return FALSE;
-}
-static void _free_tile(GritsTile *tile, gpointer _map)
-{
- g_debug("GritsPluginMap: _free_tile: %p", tile->data);
- if (tile->data)
- g_idle_add_full(G_PRIORITY_LOW, _free_tile_cb, tile->data, NULL);
-}
-
-static gpointer _update_tiles(gpointer _map)
-{
- g_debug("GritsPluginMap: _update_tiles");
- GritsPluginMap *map = _map;
- if (!g_mutex_trylock(map->mutex))
- return NULL;
- GritsPoint eye;
- grits_viewer_get_location(map->viewer, &eye.lat, &eye.lon, &eye.elev);
- grits_tile_update(map->tiles, &eye,
- MAX_RESOLUTION, TILE_WIDTH, TILE_WIDTH,
- _load_tile, map);
- grits_tile_gc(map->tiles, time(NULL)-10,
- _free_tile, map);
- g_mutex_unlock(map->mutex);
- return NULL;