[buoh/cleanups: 14/22] Rewrite comic-cache to use G_DECLARE_FINAL_TYPE
- From: Jan Tojnar <jtojnar src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [buoh/cleanups: 14/22] Rewrite comic-cache to use G_DECLARE_FINAL_TYPE
- Date: Sat, 6 Oct 2018 22:58:01 +0000 (UTC)
commit 0e1d19e3fa6561ebd4fd2d7d3e29b8b7d7a6650f
Author: Jan Tojnar <jtojnar gmail com>
Date: Tue Sep 25 20:13:20 2018 +0200
Rewrite comic-cache to use G_DECLARE_FINAL_TYPE
src/buoh-comic-cache.c | 134 ++++++++++++++++++++++---------------------------
src/buoh-comic-cache.h | 22 +-------
2 files changed, 61 insertions(+), 95 deletions(-)
---
diff --git a/src/buoh-comic-cache.c b/src/buoh-comic-cache.c
index c74471c..41c0082 100644
--- a/src/buoh-comic-cache.c
+++ b/src/buoh-comic-cache.c
@@ -26,7 +26,9 @@
#include "buoh.h"
#include "buoh-comic-cache.h"
-struct _BuohComicCachePrivate {
+struct _BuohComicCache {
+ GObject parent;
+
gchar *cache_dir;
GHashTable *image_hash;
@@ -44,17 +46,15 @@ static void buoh_comic_cache_init (BuohComicCache *buoh_comic_cache);
static void buoh_comic_cache_class_init (BuohComicCacheClass *klass);
static void buoh_comic_cache_finalize (GObject *object);
-G_DEFINE_TYPE_WITH_PRIVATE (BuohComicCache, buoh_comic_cache, G_TYPE_OBJECT)
+G_DEFINE_TYPE (BuohComicCache, buoh_comic_cache, G_TYPE_OBJECT)
static void
buoh_comic_cache_init (BuohComicCache *buoh_comic_cache)
{
- buoh_comic_cache->priv = buoh_comic_cache_get_instance_private (buoh_comic_cache);
-
- buoh_comic_cache->priv->cache_dir =
+ buoh_comic_cache->cache_dir =
g_build_filename (buoh_get_datadir (BUOH), "cache", NULL);
- buoh_comic_cache->priv->image_hash =
+ buoh_comic_cache->image_hash =
g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
@@ -85,38 +85,22 @@ buoh_comic_cache_finalize (GObject *object)
buoh_debug ("comic-cache finalize");
- if (comic_cache->priv->cache_dir) {
- g_free (comic_cache->priv->cache_dir);
- comic_cache->priv->cache_dir = NULL;
- }
+ g_clear_pointer (&comic_cache->cache_dir, g_free);
- if (comic_cache->priv->image_list) {
- g_list_free (comic_cache->priv->image_list);
- comic_cache->priv->image_list = NULL;
- }
+ g_clear_pointer (&comic_cache->image_list, g_list_free);
- if (comic_cache->priv->image_hash) {
- g_hash_table_destroy (comic_cache->priv->image_hash);
- comic_cache->priv->image_hash = NULL;
- }
+ g_clear_pointer (&comic_cache->image_hash, g_hash_table_destroy);
- if (comic_cache->priv->image_disk) {
- g_list_foreach (comic_cache->priv->image_disk,
+ if (comic_cache->image_disk) {
+ g_list_foreach (comic_cache->image_disk,
(GFunc) buoh_comic_cache_free_disk,
NULL);
- g_list_free (comic_cache->priv->image_disk);
- comic_cache->priv->image_disk = NULL;
+ g_clear_pointer (&comic_cache->image_disk, g_list_free);
}
- if (comic_cache->priv->current_pixbuf) {
- g_object_unref (comic_cache->priv->current_pixbuf);
- comic_cache->priv->current_pixbuf = NULL;
- }
+ g_clear_object (&comic_cache->current_pixbuf);
- if (comic_cache->priv->current_uri) {
- g_free (comic_cache->priv->current_uri);
- comic_cache->priv->current_uri = NULL;
- }
+ g_clear_pointer (&comic_cache->current_uri, g_free);
if (G_OBJECT_CLASS (buoh_comic_cache_parent_class)->finalize) {
(* G_OBJECT_CLASS (buoh_comic_cache_parent_class)->finalize) (object);
@@ -148,7 +132,7 @@ buoh_comic_cache_uri_to_filename (BuohComicCache *cache,
filename = g_strdup (uri);
g_strdelimit (filename, "/", '_');
- path = g_build_filename (cache->priv->cache_dir,
+ path = g_build_filename (cache->cache_dir,
filename, NULL);
g_free (filename);
@@ -169,7 +153,7 @@ buoh_comic_cache_to_disk (BuohComicCache *cache,
path = buoh_comic_cache_uri_to_filename (cache, uri);
buoh_debug ("CACHE: caching (disk) %s", path);
- if (g_list_find_custom (cache->priv->image_disk,
+ if (g_list_find_custom (cache->image_disk,
(gconstpointer) path,
(GCompareFunc) g_ascii_strcasecmp)) {
/* Already on disk */
@@ -184,7 +168,7 @@ buoh_comic_cache_to_disk (BuohComicCache *cache,
return;
}
- cache->priv->image_disk = g_list_prepend (cache->priv->image_disk,
+ cache->image_disk = g_list_prepend (cache->image_disk,
g_strdup (path));
g_free (path);
}
@@ -197,17 +181,17 @@ buoh_comic_cache_set_current (BuohComicCache *cache,
GdkPixbufLoader *loader;
GError *error = NULL;
- if (cache->priv->current_uri &&
- (g_ascii_strcasecmp (uri, cache->priv->current_uri) == 0) &&
- GDK_IS_PIXBUF (cache->priv->current_pixbuf)) {
+ if (cache->current_uri &&
+ (g_ascii_strcasecmp (uri, cache->current_uri) == 0) &&
+ GDK_IS_PIXBUF (cache->current_pixbuf)) {
return;
}
- if (cache->priv->current_pixbuf) {
- g_object_unref (cache->priv->current_pixbuf);
+ if (cache->current_pixbuf) {
+ g_object_unref (cache->current_pixbuf);
}
- if (cache->priv->current_uri) {
- g_free (cache->priv->current_uri);
+ if (cache->current_uri) {
+ g_free (cache->current_uri);
}
loader = gdk_pixbuf_loader_new ();
@@ -217,17 +201,17 @@ buoh_comic_cache_set_current (BuohComicCache *cache,
g_warning ("%s", error->message);
g_clear_error (&error);
- cache->priv->current_pixbuf = NULL;
- cache->priv->current_uri = NULL;
+ cache->current_pixbuf = NULL;
+ cache->current_uri = NULL;
gdk_pixbuf_loader_close (loader, NULL);
g_object_unref (loader);
return;
}
- cache->priv->current_pixbuf =
+ cache->current_pixbuf =
gdk_pixbuf_loader_get_pixbuf (loader);
- g_object_ref (cache->priv->current_pixbuf);
+ g_object_ref (cache->current_pixbuf);
gdk_pixbuf_loader_close (loader, &error);
g_object_unref (loader);
@@ -235,13 +219,13 @@ buoh_comic_cache_set_current (BuohComicCache *cache,
g_warning ("%s", error->message);
g_clear_error (&error);
- cache->priv->current_pixbuf = NULL;
- cache->priv->current_uri = NULL;
+ cache->current_pixbuf = NULL;
+ cache->current_uri = NULL;
return;
}
- cache->priv->current_uri = g_strdup (uri);
+ cache->current_uri = g_strdup (uri);
}
void
@@ -258,7 +242,7 @@ buoh_comic_cache_set_image (BuohComicCache *cache,
buoh_debug ("CACHE: uri %s", uri);
- if ((img = g_hash_table_lookup (cache->priv->image_hash, uri))) {
+ if ((img = g_hash_table_lookup (cache->image_hash, uri))) {
buoh_comic_cache_set_current (cache, uri, img);
return;
}
@@ -271,39 +255,39 @@ buoh_comic_cache_set_image (BuohComicCache *cache,
return;
}
- while (CACHE_SIZE - cache->priv->size < image->size) {
+ while (CACHE_SIZE - cache->size < image->size) {
GList *item;
gchar *item_uri;
- if (!cache->priv->image_list) {
+ if (!cache->image_list) {
break;
}
- item = g_list_last (cache->priv->image_list);
+ item = g_list_last (cache->image_list);
item_uri = (gchar *) item->data;
- img = (BuohComicImage *) g_hash_table_lookup (cache->priv->image_hash,
+ img = (BuohComicImage *) g_hash_table_lookup (cache->image_hash,
item_uri);
buoh_comic_cache_to_disk (cache, item_uri, img);
buoh_debug ("CACHE: removing %s", item_uri);
- cache->priv->image_list = g_list_delete_link (cache->priv->image_list,
+ cache->image_list = g_list_delete_link (cache->image_list,
item);
- g_hash_table_remove (cache->priv->image_hash, item_uri);
+ g_hash_table_remove (cache->image_hash, item_uri);
- cache->priv->size -= img->size;
- buoh_debug ("CACHE: cache size %d\n", cache->priv->size);
+ cache->size -= img->size;
+ buoh_debug ("CACHE: cache size %d\n", cache->size);
}
key_uri = g_strdup (uri);
buoh_debug ("CACHE: caching (memory) %s", key_uri);
- cache->priv->image_list = g_list_prepend (cache->priv->image_list, key_uri);
- g_hash_table_insert (cache->priv->image_hash, key_uri, image);
+ cache->image_list = g_list_prepend (cache->image_list, key_uri);
+ g_hash_table_insert (cache->image_hash, key_uri, image);
buoh_comic_cache_set_current (cache, uri, image);
- cache->priv->size += image->size;
- buoh_debug ("CACHE: cache size %d\n", cache->priv->size);
+ cache->size += image->size;
+ buoh_debug ("CACHE: cache size %d\n", cache->size);
}
BuohComicImage *
@@ -317,16 +301,16 @@ buoh_comic_cache_get_image (BuohComicCache *cache,
g_return_val_if_fail (BUOH_IS_COMIC_CACHE (cache), NULL);
g_return_val_if_fail (uri != NULL, NULL);
- image = (BuohComicImage *) g_hash_table_lookup (cache->priv->image_hash, uri);
+ image = (BuohComicImage *) g_hash_table_lookup (cache->image_hash, uri);
if (image) {
/* keep items ordered by access time */
- item = g_list_find_custom (cache->priv->image_list,
+ item = g_list_find_custom (cache->image_list,
(gconstpointer) uri,
(GCompareFunc) g_ascii_strcasecmp);
- if (item != cache->priv->image_list) {
- cache->priv->image_list = g_list_remove_link (cache->priv->image_list,
+ if (item != cache->image_list) {
+ cache->image_list = g_list_remove_link (cache->image_list,
item);
- cache->priv->image_list = g_list_prepend (cache->priv->image_list,
+ cache->image_list = g_list_prepend (cache->image_list,
item->data);
g_list_free (item);
}
@@ -361,15 +345,15 @@ buoh_comic_cache_set_pixbuf (BuohComicCache *cache,
g_return_if_fail (uri != NULL);
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
- if (cache->priv->current_uri) {
- g_free (cache->priv->current_uri);
+ if (cache->current_uri) {
+ g_free (cache->current_uri);
}
- if (cache->priv->current_pixbuf) {
- g_object_unref (cache->priv->current_pixbuf);
+ if (cache->current_pixbuf) {
+ g_object_unref (cache->current_pixbuf);
}
- cache->priv->current_uri = g_strdup (uri);
- cache->priv->current_pixbuf = g_object_ref (pixbuf);
+ cache->current_uri = g_strdup (uri);
+ cache->current_pixbuf = g_object_ref (pixbuf);
}
GdkPixbuf *
@@ -381,17 +365,17 @@ buoh_comic_cache_get_pixbuf (BuohComicCache *cache,
g_return_val_if_fail (BUOH_IS_COMIC_CACHE (cache), NULL);
g_return_val_if_fail (uri != NULL, NULL);
- if (cache->priv->current_uri &&
- g_ascii_strcasecmp (uri, cache->priv->current_uri) == 0) {
+ if (cache->current_uri &&
+ g_ascii_strcasecmp (uri, cache->current_uri) == 0) {
buoh_debug ("is the current pixbuf");
- return cache->priv->current_pixbuf;
+ return cache->current_pixbuf;
}
image = buoh_comic_cache_get_image (cache, uri);
if (image) {
buoh_comic_cache_set_current (cache, uri, image);
- return cache->priv->current_pixbuf;
+ return cache->current_pixbuf;
}
return NULL;
diff --git a/src/buoh-comic-cache.h b/src/buoh-comic-cache.h
index 2c6490a..8adb8bf 100644
--- a/src/buoh-comic-cache.h
+++ b/src/buoh-comic-cache.h
@@ -26,27 +26,9 @@
G_BEGIN_DECLS
-typedef struct _BuohComicCache BuohComicCache;
-typedef struct _BuohComicCacheClass BuohComicCacheClass;
-typedef struct _BuohComicCachePrivate BuohComicCachePrivate;
+#define BUOH_TYPE_COMIC_CACHE buoh_comic_cache_get_type ()
+G_DECLARE_FINAL_TYPE (BuohComicCache, buoh_comic_cache, BUOH, COMIC_CACHE, GObject)
-#define BUOH_TYPE_COMIC_CACHE (buoh_comic_cache_get_type())
-#define BUOH_COMIC_CACHE(object) (G_TYPE_CHECK_INSTANCE_CAST((object), BUOH_TYPE_COMIC_CACHE,
BuohComicCache))
-#define BUOH_COMIC_CACHE_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), BUOH_TYPE_COMIC_LIST,
BuohComicCacheClass))
-#define BUOH_IS_COMIC_CACHE(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), BUOH_TYPE_COMIC_CACHE))
-#define BUOH_IS_COMIC_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), BUOH_TYPE_COMIC_CACHE))
-#define BUOH_COMIC_CACHE_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), BUOH_TYPE_COMIC_CACHE,
BuohComicCacheClass))
-
-struct _BuohComicCache {
- GObject parent;
- BuohComicCachePrivate *priv;
-};
-
-struct _BuohComicCacheClass {
- GObjectClass parent_class;
-};
-
-GType buoh_comic_cache_get_type (void) G_GNUC_CONST;
BuohComicCache *buoh_comic_cache_new (void);
void buoh_comic_cache_set_image (BuohComicCache *cache,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]