aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/camel-store.c')
-rw-r--r--camel/camel-store.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 87384a61d4..b4eae9975e 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -90,7 +90,7 @@ camel_store_get_type (void)
sizeof (CamelStore),
sizeof (CamelStoreClass),
(GtkClassInitFunc) camel_store_class_init,
- (GtkObjectInitFunc) NULL,
+ (GtkObjectInitFunc) camel_store_init,
/* reserved_1 */ NULL,
/* reserved_2 */ NULL,
(GtkClassInitFunc) NULL,
@@ -166,7 +166,7 @@ cache_folder (CamelStore *store, const char *folder_name, CamelFolder *folder)
g_warning ("Caching folder %s that already exists.",
folder_name);
}
- g_hash_table_insert (store->folders, (gpointer)folder_name, folder);
+ g_hash_table_insert (store->folders, (gpointer)g_strdup(folder_name), folder);
gtk_signal_connect_object (GTK_OBJECT (folder), "destroy",
GTK_SIGNAL_FUNC (CS_CLASS (store)->uncache_folder),
GTK_OBJECT (store));
@@ -175,6 +175,7 @@ cache_folder (CamelStore *store, const char *folder_name, CamelFolder *folder)
static void
uncache_folder (CamelStore *store, CamelFolder *folder)
{
+ /* FIXME: free name index */
g_hash_table_remove (store->folders,
camel_folder_get_full_name (folder));
}
@@ -186,18 +187,25 @@ get_folder_internal (CamelStore *store, const char *folder_name,
{
CamelFolder *folder = NULL;
+ printf("Getting folder %p '%s'\n", store, folder_name);
/* Try cache first. */
folder = CS_CLASS (store)->lookup_folder (store, folder_name);
+ if (folder) {
+ printf("Folder cached!\n");
+ } else {
+ printf("Folder not cached!\n");
+ }
+
if (!folder) {
folder = CS_CLASS (store)->get_folder (store, folder_name, ex);
if (!folder)
return NULL;
+ printf("storing folder in cache: %p '%s'\n", store, folder_name);
CS_CLASS (store)->cache_folder (store, folder_name, folder);
}
- gtk_object_ref (GTK_OBJECT (folder));
return folder;
}