From 662d601ccd5ea5f9a58cfe3620d1c4f6ff326524 Mon Sep 17 00:00:00 2001 From: gnuite Date: Tue, 10 Mar 2009 05:05:36 +0000 Subject: [PATCH] Fixed a silly little seg fault on startup. git-svn-id: svn+ssh://garage/var/lib/gforge/svnroot/maemo-mapper/trunk@255 6c538b50-5814-0410-93ad-8bdf4c0149d1 --- src/maps.c | 48 ++++++++++++++++++++++++------------------------ src/maps.h | 2 ++ src/settings.c | 7 +++++++ 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/maps.c b/src/maps.c index 48e5a0b..c08ec15 100644 --- a/src/maps.c +++ b/src/maps.c @@ -3799,6 +3799,30 @@ map_layer_refresh_cb (gpointer data) return TRUE; } +RepoData* +create_default_repo() +{ + /* We have no repositories - create a default one. */ + RepoData *repo = g_new0(RepoData, 1); + + repo->db_filename = gnome_vfs_expand_initial_tilde( + REPO_DEFAULT_CACHE_DIR); + repo->url=g_strdup(REPO_DEFAULT_MAP_URI); + repo->dl_zoom_steps = REPO_DEFAULT_DL_ZOOM_STEPS; + repo->name = g_strdup(REPO_DEFAULT_NAME); + repo->view_zoom_steps = REPO_DEFAULT_VIEW_ZOOM_STEPS; + repo->double_size = FALSE; + repo->nextable = TRUE; + repo->min_zoom = REPO_DEFAULT_MIN_ZOOM; + repo->max_zoom = REPO_DEFAULT_MAX_ZOOM; + repo->layers = NULL; + repo->layer_level = 0; + repo->is_sqlite = TRUE; + set_repo_type(repo); + + return repo; +} + void maps_init(gint map_cache_size) { @@ -3806,30 +3830,6 @@ maps_init(gint map_cache_size) map_cache_init(map_cache_size); - if(_repo_list == NULL) - { - /* We have no repositories - create a default one. */ - RepoData *repo = g_new0(RepoData, 1); - - repo->db_filename = gnome_vfs_expand_initial_tilde( - REPO_DEFAULT_CACHE_DIR); - repo->url=g_strdup(REPO_DEFAULT_MAP_URI); - repo->dl_zoom_steps = REPO_DEFAULT_DL_ZOOM_STEPS; - repo->name = g_strdup(REPO_DEFAULT_NAME); - repo->view_zoom_steps = REPO_DEFAULT_VIEW_ZOOM_STEPS; - repo->double_size = FALSE; - repo->nextable = TRUE; - repo->min_zoom = REPO_DEFAULT_MIN_ZOOM; - repo->max_zoom = REPO_DEFAULT_MAX_ZOOM; - repo->layers = NULL; - repo->layer_level = 0; - repo->is_sqlite = TRUE; - set_repo_type(repo); - - _repo_list = g_list_append(_repo_list, repo); - repo_set_curr(repo); - } - /* this timer decrements layers' counters, clears layer databases, and * frefresh map if needed */ g_timeout_add (60 * 1000, map_layer_refresh_cb, NULL); diff --git a/src/maps.h b/src/maps.h index 5af0103..2bf0ef9 100644 --- a/src/maps.h +++ b/src/maps.h @@ -30,6 +30,8 @@ void map_cache_clean (void); void maps_init(); void maps_destroy(); +RepoData *create_default_repo(); + gboolean mapdb_exists(RepoData *repo, gint zoom, gint tilex, gint tiley); GdkPixbuf* mapdb_get(RepoData *repo, gint zoom, gint tilex, gint tiley); diff --git a/src/settings.c b/src/settings.c index 11a2346..a35272c 100644 --- a/src/settings.c +++ b/src/settings.c @@ -2611,6 +2611,13 @@ settings_init() repo_set_curr(curr_repo); } + if(_repo_list == NULL) + { + RepoData *repo = create_default_repo(); + _repo_list = g_list_append(_repo_list, repo); + repo_set_curr(repo); + } + /* Get last Zoom Level. Default is 16. */ value = gconf_client_get(gconf_client, GCONF_KEY_ZOOM, NULL); if(value) -- 2.45.0