int len = g_slist_length ((GSList *)stack);
const gchar *parent = len > 1 ? g_slist_nth_data ((GSList *)stack, 1) : NULL;
-
if (strcmp (element, "Attribution") == 0) {
g_free (priv->attribution);
priv->attribution = g_strdup (textl);
- } else if (parent != NULL && strcmp (parent, "CoverageArea") == 0) {
- if (strcmp (element, "ZoomMin") == 0) {
- attribution->minZoom = atoi (textl);
- } else if (strcmp (element, "ZoomMax") == 0) {
- attribution->maxZoom = atoi (textl);
- }
- } else if (parent != NULL && strcmp (parent, "BoundingBox") == 0) {
- if (strcmp (element, "SouthLatitude") == 0) {
- attribution->bounds.south = g_ascii_strtod (textl, NULL);
- } else if (strcmp (element, "WestLongitude") == 0) {
- attribution->bounds.west = g_ascii_strtod (textl, NULL);
- } else if (strcmp (element, "NorthLatitude") == 0) {
- attribution->bounds.north = g_ascii_strtod (textl, NULL);
- } else if (strcmp (element, "EastLongitude") == 0) {
- attribution->bounds.east = g_ascii_strtod (textl, NULL);
+ }
+ else {
+ if ( attribution ) {
+ if (parent != NULL && strcmp (parent, "CoverageArea") == 0) {
+ if (strcmp (element, "ZoomMin") == 0) {
+ attribution->minZoom = atoi (textl);
+ } else if (strcmp (element, "ZoomMax") == 0) {
+ attribution->maxZoom = atoi (textl);
+ }
+ } else if (parent != NULL && strcmp (parent, "BoundingBox") == 0) {
+ if (strcmp (element, "SouthLatitude") == 0) {
+ attribution->bounds.south = g_ascii_strtod (textl, NULL);
+ } else if (strcmp (element, "WestLongitude") == 0) {
+ attribution->bounds.west = g_ascii_strtod (textl, NULL);
+ } else if (strcmp (element, "NorthLatitude") == 0) {
+ attribution->bounds.north = g_ascii_strtod (textl, NULL);
+ } else if (strcmp (element, "EastLongitude") == 0) {
+ attribution->bounds.east = g_ascii_strtod (textl, NULL);
+ }
+ }
}
}
g_free(textl);
gchar *uri = g_strdup_printf(URL_ATTR_FMT, priv->api_key);
gchar *tmpname = a_download_uri_to_tmp_file ( uri, vik_map_source_default_get_download_options(VIK_MAP_SOURCE_DEFAULT(self)) );
+ if ( !tmpname ) {
+ ret = -1;
+ goto done;
+ }
g_debug("%s: %s", __FUNCTION__, tmpname);
if (!_parse_file_for_attributions(self, tmpname)) {
ret = -1;
- goto done;
}
+ (void)g_remove(tmpname);
+ g_free(tmpname);
done:
priv->loading_attributions = FALSE;
g_free(uri);
- g_remove(tmpname);
- g_free(tmpname);
return ret;
}
-static int
+static gboolean
_emit_update ( gpointer data )
{
- gdk_threads_enter();
- /* TODO
- vik_layers_panel_emit_update ( VIK_LAYERS_PANEL (data) );
- */
- gdk_threads_leave();
- return 0;
+ //if ( data )
+ // vik_layers_panel_emit_update ( VIK_LAYERS_PANEL (data) );
+ return FALSE;
}
static int
return -1; /* Abort thread */
/* Emit update */
- /* As we are on a download thread,
- * it's better to fire the update from the main loop.
- */
- g_idle_add ( (GSourceFunc)_emit_update, NULL /* FIXME */ );
+ // As we are on a download thread, must the update GUI from the main loop
+ // TODO: have reference to the window/viewport/layerspanel to update...
+ (void)gdk_threads_add_idle ( _emit_update, NULL );
return 0;
}