* Fixes NB#91689. fixes a wrong check for ASCII
[modest] / src / modest-cache-mgr.c
index f35c286..c5bf3cb 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <config.h>
 #include <modest-cache-mgr.h>
+#include <stdio.h>
 
 /* 'private'/'protected' functions */
 static void modest_cache_mgr_class_init (ModestCacheMgrClass *klass);
@@ -46,6 +47,7 @@ struct _ModestCacheMgrPrivate {
        GHashTable *date_str_cache;
        GHashTable *display_str_cache;
        GHashTable *pixbuf_cache;
+       GHashTable *send_queue_cache;
 };
 #define MODEST_CACHE_MGR_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                               MODEST_TYPE_CACHE_MGR, \
@@ -94,10 +96,10 @@ modest_cache_mgr_class_init (ModestCacheMgrClass *klass)
 
 
 static
-void pixbuf_unref (GObject *pixbuf)
+void my_object_unref (GObject *obj)
 {
-       if (pixbuf)
-               g_object_unref (pixbuf);
+       if (obj)
+               g_object_unref (obj);
 }
 
 static void
@@ -121,7 +123,12 @@ modest_cache_mgr_init (ModestCacheMgr *obj)
                g_hash_table_new_full (g_str_hash,   /* gchar* */
                                       g_str_equal,  
                                       g_free,       /* gchar*/
-                                      (GDestroyNotify)pixbuf_unref);
+                                      (GDestroyNotify)my_object_unref);
+       priv->send_queue_cache =
+               g_hash_table_new_full (g_direct_hash,   /* ptr */
+                                      g_direct_equal,  
+                                      (GDestroyNotify)my_object_unref,   /* ref'd GObject */
+                                      (GDestroyNotify)my_object_unref);   /* ref'd GObject */  
 }
 
 
@@ -135,10 +142,11 @@ modest_cache_mgr_finalize (GObject *obj)
        priv = MODEST_CACHE_MGR_GET_PRIVATE(obj);
        
        modest_cache_mgr_flush_all (self);
-       
+
        priv->date_str_cache    = NULL;
        priv->display_str_cache = NULL;
        priv->pixbuf_cache      = NULL;
+       priv->send_queue_cache  = NULL;
 
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
@@ -153,6 +161,8 @@ get_cache (ModestCacheMgrPrivate *priv, ModestCacheMgrCacheType type)
                return priv->display_str_cache;
        case MODEST_CACHE_MGR_CACHE_TYPE_PIXBUF:
                return priv->pixbuf_cache;
+       case MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE:
+               return priv->send_queue_cache;  
        default:
                g_return_val_if_reached(NULL); /* should not happen */
        }
@@ -173,6 +183,11 @@ modest_cache_mgr_get_cache   (ModestCacheMgr* self, ModestCacheMgrCacheType type
        GHashTable *cache;
        
        g_return_val_if_fail (self, NULL);
+       
+       if (!(type >= 0 && type <= MODEST_CACHE_MGR_CACHE_TYPE_NUM)) {
+               printf ("DEBUG: %s: incorrect type = %d\n", __FUNCTION__, type);        
+       }
+       
        g_return_val_if_fail (type >= 0 && type <= MODEST_CACHE_MGR_CACHE_TYPE_NUM, NULL);
 
        priv  = MODEST_CACHE_MGR_GET_PRIVATE(self);
@@ -182,13 +197,6 @@ modest_cache_mgr_get_cache   (ModestCacheMgr* self, ModestCacheMgrCacheType type
 }
 
 
-static gboolean
-always_true (gpointer key, gpointer value, gpointer user_data)
-{
-       return TRUE;
-}
-
-
 void
 modest_cache_mgr_flush (ModestCacheMgr *self, ModestCacheMgrCacheType type)
 {
@@ -197,13 +205,12 @@ modest_cache_mgr_flush (ModestCacheMgr *self, ModestCacheMgrCacheType type)
        
        g_return_if_fail (self);
        g_return_if_fail (type >= 0 && type <= MODEST_CACHE_MGR_CACHE_TYPE_NUM);
-
+       
        priv  = MODEST_CACHE_MGR_GET_PRIVATE(self);
 
        cache = get_cache (priv, type);
        if (cache)
-               g_hash_table_foreach_remove (cache, always_true, NULL);
-       /*  g_hash_table_remove_all (cache) in only available since GLIB 2.12 */
+               g_hash_table_destroy (cache);
 }
 
 
@@ -212,7 +219,7 @@ modest_cache_mgr_flush_all (ModestCacheMgr *self)
 {
        int i;
        g_return_if_fail (self);
-
+       
        for (i = 0; i != MODEST_CACHE_MGR_CACHE_TYPE_NUM; ++i)
                modest_cache_mgr_flush (self, i);       
 }