-static gboolean _load_tile_cb(gpointer _data)
-{
- struct _LoadTileData *data = _data;
- struct _TileData *tdata = data->tdata;
- g_debug("GritsPluginElev: _load_tile_cb start");
- if (data->elev->aborted) {
- g_debug("GritsPluginElev: _load_tile - aborted");
- return FALSE;
- }
-
- /* Load OpenGL texture (from main thread) */
- if (data->pixels) {
- glGenTextures(1, &tdata->tex);
- glBindTexture(GL_TEXTURE_2D, tdata->tex);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
- glTexImage2D(GL_TEXTURE_2D, 0, TILE_CHANNELS, TILE_WIDTH, TILE_HEIGHT, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, data->pixels);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- 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();
- }
-
- /* Set hight function (from main thread) */
- if (tdata->bil) {
- grits_viewer_set_height_func(data->elev->viewer, &data->tile->edge,
- _height_func, data->elev, TRUE);
- }
-
- /* Queue tiles for drawing */
- data->tile->data = tdata;
- gtk_widget_queue_draw(GTK_WIDGET(data->elev->viewer));
-
- /* Cleanup */
- g_free(data->pixels);
- g_free(data);
- return FALSE;
-}
-
-static void _load_tile(GritsTile *tile, gpointer _elev)