commit f9f3a966c955e4db397c955e01b78be512fa0997
parent 5a9870b8cad40dc91c37b5934feffc2e98c069aa
Author: Jacki <jacki@thejackimonster.de>
Date: Mon, 22 Apr 2024 18:45:01 +0200
Fix too many open files issue
Signed-off-by: Jacki <jacki@thejackimonster.de>
Diffstat:
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/src/contact.c b/src/contact.c
@@ -69,6 +69,9 @@ contact_destroy_info(struct GNUNET_CHAT_Contact *contact)
if (info->icon)
g_object_unref(info->icon);
+ if (info->icon_file)
+ g_object_unref(info->icon_file);
+
g_free(info);
GNUNET_CHAT_contact_set_user_pointer(contact, NULL);
@@ -250,20 +253,31 @@ _info_profile_downloaded(void *cls,
if (!file_object)
return;
+ if (!(info->icon_file))
+ goto skip_comparison;
+
+ if (g_file_equal(info->icon_file, file_object))
+ {
+ g_object_unref(file_object);
+ return;
+ }
+
+ g_object_unref(info->icon_file);
+
+skip_comparison:
+ info->icon_file = file_object;
+
if (info->icon)
g_object_unref(info->icon);
info->icon = g_file_icon_new(file_object);
if (!(info->icon))
- goto skip_avatar;
+ return;
GList* list;
for (list = info->name_avatars; list; list = list->next)
hdy_avatar_set_loadable_icon(HDY_AVATAR(list->data), G_LOADABLE_ICON(info->icon));
-
-skip_avatar:
- g_object_unref(file_object);
}
static enum GNUNET_GenericReturnValue
diff --git a/src/contact.h b/src/contact.h
@@ -32,6 +32,7 @@
typedef struct MESSENGER_ContactInfo
{
void *last_message;
+ GFile *icon_file;
GIcon *icon;
GList *name_labels;