Remove the PurpleImageStore API as it's no longer used
This will eventually be replaced by something like PurpleFileCache but we
haven't had a need for it yet.
Testing Done:
Michelangelo is a party dude!
Reviewed at https://reviews.imfreedom.org/r/3093/
--- a/libpurple/core.c Thu Apr 11 21:39:52 2024 -0500
+++ b/libpurple/core.c Thu Apr 11 22:37:41 2024 -0500
@@ -32,7 +32,6 @@
-#include "image-store.h"
@@ -151,9 +150,6 @@
- /* The buddy icon code uses the image store, so init it early. */
- _purple_image_store_init();
/* Accounts use status, buddy icons and connection signals, so
* initialize these before accounts
@@ -252,7 +248,6 @@
purple_statuses_uninit();
purple_accounts_uninit();
- _purple_image_store_uninit();
purple_ui_stop(core->ui);
--- a/libpurple/image-store.c Thu Apr 11 21:39:52 2024 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
- * Purple - Internet Messaging Library
- * Copyright (C) Pidgin Developers <devel@pidgin.im>
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, see <https://www.gnu.org/licenses/>.
-#include "image-store.h"
-#define TEMP_IMAGE_TIMEOUT 5
-static GHashTable *id_to_image = NULL;
-static guint last_id = 0;
-/* keys: timeout handle */
-static GHashTable *temp_images = NULL;
-static GSList *perm_images = NULL;
-image_reset_id(gpointer _id)
- g_return_if_fail(id_to_image != NULL);
- g_hash_table_remove(id_to_image, _id);
-image_set_id(PurpleImage *image)
- /* Use the next unused id number. We do it in a loop on the off chance
- * that next id wraps back around to 0 and the hash table still contains
- * entries from the first time around.
- if (G_UNLIKELY(last_id == 0))
- if (purple_image_store_get(last_id) == NULL)
- g_object_set_data_full(G_OBJECT(image), "purple-image-store-id",
- GINT_TO_POINTER(last_id), image_reset_id);
- g_hash_table_insert(id_to_image, GINT_TO_POINTER(last_id), image);
-image_get_id(PurpleImage *image)
- return GPOINTER_TO_INT(g_object_get_data(G_OBJECT(image),
- "purple-image-store-id"));
-purple_image_store_add(PurpleImage *image)
- g_return_val_if_fail(PURPLE_IS_IMAGE(image), 0);
- id = image_get_id(image);
- id = image_set_id(image);
- perm_images = g_slist_prepend(perm_images, image);
-purple_image_store_add_weak(PurpleImage *image)
- g_return_val_if_fail(PURPLE_IS_IMAGE(image), 0);
- id = image_get_id(image);
- return image_set_id(image);
-remove_temporary(gpointer _image)
- PurpleImage *image = _image;
- handle = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(image),
- "purple-image-store-handle"));
- g_hash_table_remove(temp_images, GINT_TO_POINTER(handle));
- return G_SOURCE_REMOVE;
-cancel_temporary(gpointer key, G_GNUC_UNUSED gpointer value,
- G_GNUC_UNUSED gpointer data)
- g_source_remove(GPOINTER_TO_INT(key));
-purple_image_store_add_temporary(PurpleImage *image)
- g_return_val_if_fail(PURPLE_IS_IMAGE(image), 0);
- id = image_get_id(image);
- /* XXX: add_temporary doesn't extend previous temporary call, sorry */
- id = image_set_id(image);
- handle = g_timeout_add_seconds(TEMP_IMAGE_TIMEOUT,
- remove_temporary, image);
- g_object_set_data(G_OBJECT(image), "purple-image-store-handle",
- GINT_TO_POINTER(handle));
- g_hash_table_insert(temp_images, GINT_TO_POINTER(handle), image);
-purple_image_store_get(guint id)
- return g_hash_table_lookup(id_to_image, GINT_TO_POINTER(id));
-purple_image_store_get_from_uri(const gchar *uri)
- g_return_val_if_fail(uri != NULL, NULL);
- if (!g_str_has_prefix(uri, PURPLE_IMAGE_STORE_PROTOCOL)) {
- uri += sizeof(PURPLE_IMAGE_STORE_PROTOCOL) - 1;
- longid = g_ascii_strtoull(uri, &endptr, 10);
- if (endchar != '\0' && endchar != '"' &&
- endchar != '\'' && endchar != ' ')
- return purple_image_store_get(id);
-purple_image_store_get_uri(PurpleImage *image)
- g_return_val_if_fail(PURPLE_IS_IMAGE(image), NULL);
- path = purple_image_get_path(image);
- return g_filename_to_uri(path, NULL, NULL);
- img_id = purple_image_store_add_weak(image);
- return g_strdup_printf(PURPLE_IMAGE_STORE_PROTOCOL "%u", img_id);
-_purple_image_store_init(void)
- id_to_image = g_hash_table_new(g_direct_hash, g_direct_equal);
- temp_images = g_hash_table_new_full(g_direct_hash, g_direct_equal,
-_purple_image_store_uninit(void)
- g_clear_slist(&perm_images, g_object_unref);
- g_hash_table_foreach(temp_images, cancel_temporary, NULL);
- g_clear_pointer(&temp_images, g_hash_table_destroy);
- g_clear_pointer(&id_to_image, g_hash_table_destroy);
--- a/libpurple/image-store.h Thu Apr 11 21:39:52 2024 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
- * Purple - Internet Messaging Library
- * Copyright (C) Pidgin Developers <devel@pidgin.im>
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, see <https://www.gnu.org/licenses/>.
-#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
-# error "only <purple.h> may be included directly"
-#ifndef PURPLE_IMAGE_STORE_H
-#define PURPLE_IMAGE_STORE_H
- * Image store references #PurpleImage's by a simple integer value.
- * It's a convenient way to embed images in HTML-like strings.
- * Integer ID's are tracked for being valid - when a image is destroyed, it's
- * also removed from the store. If the application runs for a very long time and
- * all possible id numbers from integer range are utilized, it will use
- * previously released numbers.
-#include "purpleversion.h"
- * PURPLE_IMAGE_STORE_PROTOCOL:
- * A global URI prefix for images stored in this subsystem.
-#define PURPLE_IMAGE_STORE_PROTOCOL "purple-image:"
- * purple_image_store_add:
- * Permanently adds an image to the store. If the @image is already in the
- * store, it will return its current id.
- * This function increases @image's reference count, so it won't be destroyed
- * until image store subsystem is shut down. Don't decrease @image's reference
- * count by yourself - if you don't want the store to hold the reference,
- * use #purple_image_store_add_weak.
- * Returns: the unique identifier for the @image.
-purple_image_store_add(PurpleImage *image);
- * purple_image_store_add_weak:
- * Adds an image to the store without increasing reference count. It will be
- * removed from the store when @image gets destroyed.
- * If the @image is already in the store, it will return its current id.
- * Returns: the unique identifier for the @image.
-purple_image_store_add_weak(PurpleImage *image);
- * purple_image_store_add_temporary:
- * Adds an image to the store to be used in a short period of time.
- * If the @image is already in the store, it will just return its current id.
- * Increases reference count for the @image for a time long enough to display
- * the @image by the UI. In current implementation it's five seconds, but may be
- * changed in the future, so if you need more sophisticated reference
- * management, implement it on your own.
- * Returns: the unique identifier for the @image.
-purple_image_store_add_temporary(PurpleImage *image);
- * purple_image_store_get:
- * @id: the unique identifier of an image.
- * Finds the image with a certain identifier within a store.
- * Returns: (transfer none): the image referenced by @id, or %NULL if it
-purple_image_store_get(guint id);
- * purple_image_store_get_from_uri:
- * @uri: the URI of a potential #PurpleImage. Should not be %NULL.
- * Checks, if the @uri is pointing to any #PurpleImage by referring
- * to #PURPLE_IMAGE_STORE_PROTOCOL and returns the image, if it's valid.
- * The function doesn't throw any warning, if the @uri is for any
- * Returns: (transfer none): the image referenced by @uri, or %NULL if it
- * doesn't point to any valid image.
-purple_image_store_get_from_uri(const gchar *uri);
- * purple_image_store_get_uri:
- * Generates an URI for the @image, to be retrieved using
- * #purple_image_store_get_from_uri.
- * Returns: (transfer full): the URI for the @image. Should be #g_free'd when
-purple_image_store_get_uri(PurpleImage *image);
- * _purple_image_store_init: (skip)
- * Initializes the image store subsystem.
-_purple_image_store_init(void);
- * _purple_image_store_uninit: (skip)
- * Uninitializes the image store subsystem.
-_purple_image_store_uninit(void);
-#endif /* PURPLE_IMAGE_STORE_H */
--- a/libpurple/meson.build Thu Apr 11 21:39:52 2024 -0500
+++ b/libpurple/meson.build Thu Apr 11 22:37:41 2024 -0500
@@ -17,7 +17,6 @@
@@ -144,7 +143,6 @@
--- a/po/POTFILES.in Thu Apr 11 21:39:52 2024 -0500
+++ b/po/POTFILES.in Thu Apr 11 22:37:41 2024 -0500
@@ -16,7 +16,6 @@
libpurple/media/backend-iface.c
libpurple/media/candidate.c