messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/contact.c | 22++++++++++++++++++----
Msrc/contact.h | 1+
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;