/*
- * Copyright (C) 2009-2010 Andy Spencer <andy753421@gmail.com>
+ * Copyright (C) 2009-2011 Andy Spencer <andy753421@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <time.h>
#include <glib/gstdio.h>
-#include <GL/gl.h>
#include <grits.h>
{
struct _LoadTileData *data = _data;
g_debug("GritsPluginSat: _load_tile_cb start");
+ if (data->sat->aborted) {
+ g_debug("GritsPluginSat: _load_tile - aborted");
+ return FALSE;
+ }
guint *tex = g_new0(guint, 1);
glGenTextures(1, tex);
(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;
sat->viewer = g_object_ref(viewer);
/* Load initial tiles */
- _load_tile(sat->tiles, sat);
_update_tiles(NULL, sat);
/* Connect signals */
sat->aborted = TRUE;
/* Drop references */
if (sat->viewer) {
- g_signal_handler_disconnect(sat->viewer, sat->sigid);
- grits_viewer_remove(sat->viewer, sat->tiles);
+ GritsViewer *viewer = sat->viewer;
+ sat->viewer = NULL;
+ g_signal_handler_disconnect(viewer, sat->sigid);
+ grits_viewer_remove(viewer, GRITS_OBJECT(sat->tiles));
+ g_object_unref(sat->tiles);
soup_session_abort(sat->wms->http->soup);
g_thread_pool_free(sat->threads, TRUE, TRUE);
while (gtk_events_pending())
gtk_main_iteration();
- g_object_unref(sat->viewer);
- sat->viewer = NULL;
+ g_object_unref(viewer);
}
G_OBJECT_CLASS(grits_plugin_sat_parent_class)->dispose(gobject);
}