# HG changeset patch # User Yoshiki Yazawa # Date 1216111506 -32400 # Node ID 799b28f181f81bb362ce743c8457a21397c7ec9f # Parent 8b98a26f44ceddad8f128439b54e81551a372f34 added UI for icon size. diff -r 8b98a26f44ce -r 799b28f181f8 pidgin-twitter.c --- a/pidgin-twitter.c Tue Jul 15 15:07:23 2008 +0900 +++ b/pidgin-twitter.c Tue Jul 15 17:45:06 2008 +0900 @@ -893,7 +893,10 @@ GList *mark_list = NULL; GList *current; - if(data && data->request_list) + if(!data) + return; + + if(data->request_list) mark_list = data->request_list; /* remove the marks in its GtkTextBuffers */ @@ -1981,6 +1984,37 @@ } } +static void +invalidate_icon_data_func(gpointer key, gpointer value, gpointer user_data) +{ + icon_data *data = (icon_data *)value; + + g_return_if_fail(data != NULL); + g_return_if_fail(data->icon_id >0); + + /* img->data is managed by gdkpixbuf, so we should not free here. */ +#if 0 + PurpleStoredImage *img = purple_imgstore_find_by_id(data->icon_id); + if(img) + purple_imgstore_unref_by_id(data->icon_id); +#endif + + data->icon_id = 0; +} + +static void +icon_size_prefs_cb(const char *name, PurplePrefType type, + gconstpointer val, gpointer data) +{ + /* invalidate icon cache */ + g_hash_table_foreach(icon_data_by_user, + (GHFunc)invalidate_icon_data_func, NULL); + g_hash_table_foreach(icon_data_by_user2, + (GHFunc)invalidate_icon_data_func, NULL); + g_hash_table_foreach(icon_data_by_user3, + (GHFunc)invalidate_icon_data_func, NULL); +} + static PurplePluginPrefFrame * get_plugin_pref_frame(PurplePlugin *plugin) { @@ -2044,7 +2078,6 @@ "Show icons in conversation"); purple_plugin_pref_frame_add(frame, pref); -#if 0 /* icon size */ pref = purple_plugin_pref_new_with_name_and_label(OPT_ICON_SIZE, "Icon size in pixel"); @@ -2052,7 +2085,8 @@ purple_plugin_pref_frame_add(frame, pref); /* XXX should invalidate pixbufs in memory --yaz */ -#endif + purple_prefs_connect_callback(plugin, OPT_ICON_SIZE, + icon_size_prefs_cb, NULL); /* show text counter */ pref = purple_plugin_pref_new_with_name_and_label(OPT_COUNTER,