# HG changeset patch # User Sadrul Habib Chowdhury # Date 1177857876 0 # Node ID b7c550dab1bcd40eef62856d0a0f64cd2ef054ec # Parent 3c4b00865a30c0ba3c55bee6ca5420d5047dc4e4# Parent c5405b8ea552390587126e0953e4fc6de2fc7524 merge of '46c593524f745e1ed42ad75ba71d614c660ef52f' and 'f93aa25f84001c0acb885d2792082c40d1959da0' diff -r 3c4b00865a30 -r b7c550dab1bc ChangeLog.API --- a/ChangeLog.API Sun Apr 29 14:42:26 2007 +0000 +++ b/ChangeLog.API Sun Apr 29 14:44:36 2007 +0000 @@ -164,14 +164,23 @@ * gaim_gtk_buddy_icon_get_scale_size() was changed to accept an additional parameter which is used to determine what kind of scaling should be done, if any. - * purple_request_input(), purple_request_choice(), - purple_request_choice_varg(), purple_request_action(), - purple_request_action_varg(), purple_request_fields(), - purple_request_yes_no(), purple_request_ok_cancel(), - purple_request_accept_cancel(), purple_request_file(), and - purple_request_folder() was changed to accept account, who, and - conversation parameters for associating the request with an account, a - buddy, or a conversation. + * purple_request_input(), purple_request_choice(), + purple_request_choice_varg(), purple_request_action(), + purple_request_action_varg(), purple_request_fields(), + purple_request_yes_no(), purple_request_ok_cancel(), + purple_request_accept_cancel(), purple_request_file(), and + purple_request_folder() was changed to accept account, who, and + conversation parameters for associating the request with an account, a + buddy, or a conversation. + * Significant changes to the buddy icon and imgstore APIs. If you + were using any of it, it's best to look at the header files or + Doxygen documentation, but here are some significant changes: + purple_buddy_icon_new() now takes ownership of ("frees") icon_data + purple_buddy_icon_set_data(): likewise for data + purple_buddy_icon_set_for_user(): likewise for data + purple_buddy_icon_set_for_user() now takes a checksum parameter + purple_imgstore_add() was renamed to purple_imgstore_add_with_id() + which takes ownership of data Removed: * gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute diff -r 3c4b00865a30 -r b7c550dab1bc Makefile.am --- a/Makefile.am Sun Apr 29 14:42:26 2007 +0000 +++ b/Makefile.am Sun Apr 29 14:44:36 2007 +0000 @@ -17,7 +17,8 @@ pidgin.apspec.in \ pidgin.spec.in \ pidgin.desktop.in \ - po/Makefile.mingw + po/Makefile.mingw \ + valgrind-suppressions noinst_HEADERS = config.h diff -r 3c4b00865a30 -r b7c550dab1bc configure.ac --- a/configure.ac Sun Apr 29 14:42:26 2007 +0000 +++ b/configure.ac Sun Apr 29 14:44:36 2007 +0000 @@ -11,10 +11,15 @@ # purple_micro_version = 0 # purple_major_version += 1; # +# purple_version_suffix should be similar to one of the following: +# For beta releases: [beta2] +# For code under development: [devel] +# For production releases: [] +# m4_define([purple_major_version], [2]) m4_define([purple_minor_version], [0]) m4_define([purple_micro_version], [0]) -m4_define([purple_version_suffix], [devel]) +m4_define([purple_version_suffix], [beta7]) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix])) diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/account.c --- a/libpurple/account.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/account.c Sun Apr 29 14:44:36 2007 +0000 @@ -802,7 +802,7 @@ xmlnode_free(node); - purple_buddy_icons_account_loaded_cb(); + _purple_buddy_icons_account_loaded_cb(); } diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/blist.c --- a/libpurple/blist.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/blist.c Sun Apr 29 14:44:36 2007 +0000 @@ -607,7 +607,7 @@ xmlnode_free(purple); /* This tells the buddy icon code to do its thing. */ - purple_buddy_icons_blist_loaded_cb(); + _purple_buddy_icons_blist_loaded_cb(); } diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/buddyicon.c --- a/libpurple/buddyicon.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/buddyicon.c Sun Apr 29 14:44:36 2007 +0000 @@ -212,6 +212,10 @@ { const char *filename = purple_imgstore_get_filename(img); + /* If there's no filename, it can't be one of our images. */ + if (filename == NULL) + return; + if (img == g_hash_table_lookup(icon_data_cache, filename)) { purple_buddy_icon_data_uncache_file(filename); @@ -694,11 +698,13 @@ { const char *filename = purple_imgstore_get_filename(img); purple_account_set_string(account, "buddy_icon", filename); + purple_account_set_int(account, "buddy_icon_timestamp", time(NULL)); ref_filename(filename); } else { purple_account_set_string(account, "buddy_icon", NULL); + purple_account_set_int(account, "buddy_icon_timestamp", 0); } unref_filename(old_icon); @@ -721,7 +727,7 @@ if (old_img) purple_imgstore_unref(old_img); - else + else if (old_icon) { /* The old icon may not have been loaded into memory. In that * case, we'll need to uncache the filename. The filenames @@ -733,6 +739,25 @@ return img; } +time_t +purple_buddy_icons_get_account_icon_timestamp(PurpleAccount *account) +{ + time_t ret; + + g_return_val_if_fail(account != NULL, 0); + + ret = purple_account_get_int(account, "buddy_icon_timestamp", 0); + + /* This deals with migration cases. */ + if (ret == 0 && purple_account_get_string(account, "buddy_icon", NULL) != NULL) + { + ret = time(NULL); + purple_account_set_int(account, "buddy_icon_timestamp", ret); + } + + return ret; +} + PurpleStoredImage * purple_buddy_icons_find_custom_icon(PurpleContact *contact) { @@ -842,7 +867,7 @@ } void -purple_buddy_icon_set_old_icons_dir(const char *dirname) +_purple_buddy_icon_set_old_icons_dir(const char *dirname) { old_icons_dir = g_strdup(dirname); } @@ -887,9 +912,19 @@ FILE *file; char *new_filename; - if (!read_icon_file(path, &icon_data, &icon_len) || - icon_data == NULL || icon_len > 0) + if (!read_icon_file(path, &icon_data, &icon_len)) { + g_free(path); + delete_buddy_icon_settings(node, setting_name); + return; + } + + if (icon_data == NULL || icon_len <= 0) + { + /* This really applies to the icon_len check. + * icon_data should never be NULL if + * read_icon_file() returns TRUE. */ + purple_debug_error("buddyicon", "Empty buddy icon file: %s\n", path); delete_buddy_icon_settings(node, setting_name); g_free(path); return; @@ -900,8 +935,11 @@ new_filename = purple_buddy_icon_data_calculate_filename(icon_data, icon_len); if (new_filename == NULL) { + purple_debug_error("buddyicon", + "New icon filename is NULL. This should never happen! " + "The old filename was: %s\n", path); delete_buddy_icon_settings(node, setting_name); - return; + g_return_if_reached(); } path = g_build_filename(dirname, new_filename, NULL); @@ -967,14 +1005,14 @@ } else { - /* If the icon is gone, drop the setting... */ + purple_debug_error("buddyicon", "Old icon file doesn't exist: %s\n", path); delete_buddy_icon_settings(node, setting_name); g_free(path); } } void -purple_buddy_icons_account_loaded_cb() +_purple_buddy_icons_account_loaded_cb() { const char *dirname = purple_buddy_icons_get_cache_dir(); GList *cur; @@ -999,7 +1037,7 @@ } void -purple_buddy_icons_blist_loaded_cb() +_purple_buddy_icons_blist_loaded_cb() { PurpleBlistNode *node = purple_blist_get_root(); const char *dirname = purple_buddy_icons_get_cache_dir(); @@ -1124,7 +1162,8 @@ g_direct_hash, g_direct_equal, NULL, (GFreeFunc)g_hash_table_destroy); - icon_data_cache = g_hash_table_new(g_str_hash, g_str_equal); + icon_data_cache = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, NULL); icon_file_cache = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); pointer_icon_cache = g_hash_table_new(g_direct_hash, g_direct_equal); diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/buddyicon.h --- a/libpurple/buddyicon.h Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/buddyicon.h Sun Apr 29 14:44:36 2007 +0000 @@ -261,6 +261,19 @@ guchar *icon_data, size_t icon_len); /** + * Returns the timestamp of when the icon was set. + * + * This is intended for use in protocols that require a timestamp for + * buddy icon update reasons. + * + * @param account The account + * + * @return The time the icon was set, or 0 if an error occurred. + */ +time_t +purple_buddy_icons_get_account_icon_timestamp(PurpleAccount *account); + +/** * Returns the custom buddy icon image for a contact. * * The caller owns a reference to the image in the store, and must dereference diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/core.c --- a/libpurple/core.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/core.c Sun Apr 29 14:44:36 2007 +0000 @@ -641,7 +641,7 @@ } old_icons_dir = g_build_filename(old_user_dir, "icons", NULL); - purple_buddy_icon_set_old_icons_dir(old_icons_dir); + _purple_buddy_icon_set_old_icons_dir(old_icons_dir); g_free(old_icons_dir); g_free(old_user_dir); diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/dnsquery.c --- a/libpurple/dnsquery.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/dnsquery.c Sun Apr 29 14:44:36 2007 +0000 @@ -140,7 +140,7 @@ * Begin the DNS resolver child process functions. */ #ifdef HAVE_SIGNAL_H -static void +G_GNUC_NORETURN static void trap_gdb_bug() { const char *message = @@ -158,7 +158,7 @@ } #endif -static void +G_GNUC_NORETURN static void purple_dnsquery_resolver_run(int child_out, int child_in, gboolean show_debug) { dns_params_t dns_params; diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/dnssrv.c --- a/libpurple/dnssrv.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/dnssrv.c Sun Apr 29 14:44:36 2007 +0000 @@ -92,7 +92,7 @@ #ifndef _WIN32 -static void +G_GNUC_NORETURN static void resolve(int in, int out) { GList *ret = NULL; diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/gaim-compat.h --- a/libpurple/gaim-compat.h Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/gaim-compat.h Sun Apr 29 14:44:36 2007 +0000 @@ -345,7 +345,7 @@ #define gaim_buddy_icon_update purple_buddy_icon_update #define gaim_buddy_icon_set_data(icon, data, len) \ - purple_buddy_icon_set_protocol_data(icon, g_memdup(data, len), len, NULL); + purple_buddy_icon_set_data(icon, g_memdup(data, len), len, NULL); #define gaim_buddy_icon_get_account purple_buddy_icon_get_account #define gaim_buddy_icon_get_username purple_buddy_icon_get_username @@ -353,7 +353,7 @@ #define gaim_buddy_icon_get_type purple_buddy_icon_get_extension #define gaim_buddy_icons_set_for_user(icon, data, len) \ - purple_buddy_icons_set_for_user(icon, g_memdup(data, len), len) + purple_buddy_icons_set_for_user(icon, g_memdup(data, len), len, NULL) #define gaim_buddy_icons_find purple_buddy_icons_find #define gaim_buddy_icons_set_caching purple_buddy_icons_set_caching #define gaim_buddy_icons_is_caching purple_buddy_icons_is_caching @@ -961,7 +961,8 @@ #define GaimStoredImage PurpleStoredImage -#define gaim_imgstore_add(data, size, filename) purple_imgstore_add_with_id(g_memdup(data, size), size, filename) +#define gaim_imgstore_add(data, size, filename) \ + purple_imgstore_add_with_id(g_memdup(data, size), size, filename) #define gaim_imgstore_get purple_imgstore_find_by_id #define gaim_imgstore_get_data purple_imgstore_get_data #define gaim_imgstore_get_size purple_imgstore_get_size diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/internal.h --- a/libpurple/internal.h Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/internal.h Sun Apr 29 14:44:36 2007 +0000 @@ -187,17 +187,17 @@ /* This is for the accounts code to notify the buddy icon code that * it's done loading. We may want to replace this with a signal. */ void -purple_buddy_icons_account_loaded_cb(void); +_purple_buddy_icons_account_loaded_cb(void); /* This is for the buddy list to notify the buddy icon code that * it's done loading. We may want to replace this with a signal. */ void -purple_buddy_icons_blist_loaded_cb(void); +_purple_buddy_icons_blist_loaded_cb(void); /* This is for the purple_core_migrate() code to tell the buddy * icon subsystem about the old icons directory so it can * migrate any icons in use. */ void -purple_buddy_icon_set_old_icons_dir(const char *dirname); +_purple_buddy_icon_set_old_icons_dir(const char *dirname); #endif /* _PURPLE_INTERNAL_H_ */ diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/protocols/msn/slp.c Sun Apr 29 14:44:36 2007 +0000 @@ -955,7 +955,7 @@ if (obj == NULL) { -/* purple_buddy_icons_set_for_user(account, user->passport, NULL, 0, NULL); */ + purple_buddy_icons_set_for_user(account, user->passport, NULL, 0, NULL); return; } diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Sun Apr 29 14:44:36 2007 +0000 @@ -1941,9 +1941,9 @@ purple_debug_info("oscar", "Sending buddy icon to %s (%d bytes)\n", userinfo->sn, len); - /* TODO: XXX: FIXME: Does this actually need the mtime of the file? */ aim_im_sendch2_icon(od, userinfo->sn, data, len, - time(NULL), aimutil_iconsum(data, len)); + purple_buddy_icons_get_account_icon_timestamp(account), + aimutil_iconsum(data, len)); } purple_imgstore_unref(img); @@ -4232,8 +4232,7 @@ gconstpointer data = purple_imgstore_get_data(img); args.iconlen = purple_imgstore_get_size(img); args.iconsum = aimutil_iconsum(data, args.iconlen); - /* TODO: XXX: FIXME: Deal with the timestamp issue. */ - args.iconstamp = time(NULL); + args.iconstamp = purple_buddy_icons_get_account_icon_timestamp(account); if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) { bi->ico_informed = FALSE; diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/protocols/silc/buddy.c --- a/libpurple/protocols/silc/buddy.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/protocols/silc/buddy.c Sun Apr 29 14:44:36 2007 +0000 @@ -1706,7 +1706,7 @@ if (!mime) return; - t = purple_util_get_image_extension(purple_imgstore_get_data(img), purple_imgstore_get_size(img)); + t = purple_imgstore_get_extension(img); if (!t || !strcmp(t, "icon")) { silc_mime_free(mime); return; diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/savedstatuses.c --- a/libpurple/savedstatuses.c Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/savedstatuses.c Sun Apr 29 14:44:36 2007 +0000 @@ -154,7 +154,7 @@ } /** - * A magic number is calcuated for each status, and then the + * A magic number is calculated for each status, and then the * statuses are ordered by the magic number. The magic number * is the date the status was last used offset by one day for * each time the status has been used (but only by 10 days at diff -r 3c4b00865a30 -r b7c550dab1bc libpurple/win32/targets.mak --- a/libpurple/win32/targets.mak Sun Apr 29 14:42:26 2007 +0000 +++ b/libpurple/win32/targets.mak Sun Apr 29 14:44:36 2007 +0000 @@ -8,16 +8,13 @@ $(PIDGIN_CONFIG_H): $(PIDGIN_TREE_TOP)/config.h.mingw cp $(PIDGIN_TREE_TOP)/config.h.mingw $(PIDGIN_CONFIG_H) -$(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in +$(PURPLE_VERSION_H): $(PURPLE_VERSION_H).in $(PIDGIN_TREE_TOP)/configure.ac cp $(PURPLE_VERSION_H).in $(PURPLE_VERSION_H) awk 'BEGIN {FS="[\\(\\)\\[\\]]"} \ /^m4_define..purple_major_version/ {system("sed -i -e s/@PURPLE_MAJOR_VERSION@/"$$5"/ $(PURPLE_VERSION_H)");} \ /^m4_define..purple_minor_version/ {system("sed -i -e s/@PURPLE_MINOR_VERSION@/"$$5"/ $(PURPLE_VERSION_H)");} \ /^m4_define..purple_micro_version/ {system("sed -i -e s/@PURPLE_MICRO_VERSION@/"$$5"/ $(PURPLE_VERSION_H)"); exit}' $(PIDGIN_TREE_TOP)/configure.ac - sed -e s/@PURPLE_MAJOR_VERSION@/2/ -e s/@PURPLE_MINOR_VERSION@/0/ -e s/@PURPLE_MICRO_VERSION@/0/ $(PURPLE_TOP)/version.h.in > $(PURPLE_VERSION_H) - - $(PURPLE_DLL) $(PURPLE_DLL).a: $(PURPLE_VERSION_H) $(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) libpurple.dll diff -r 3c4b00865a30 -r b7c550dab1bc pidgin.spec.in --- a/pidgin.spec.in Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin.spec.in Sun Apr 29 14:44:36 2007 +0000 @@ -6,10 +6,10 @@ # When not doing betas comment this out # NOTE: %defines in spec files are evaluated in comments so the correct # way to comment it out is to replace the % with # -#define beta 7 +%define beta 7 %if 0%{?beta} -%define pidginver %(echo "@VERSION@"|sed -e 's/dev//; s/beta.*//') +%define pidginver %(echo "@VERSION@"|sed -e 's/dev.*//; s/beta.*//') %else %define pidginver @VERSION@ %endif @@ -237,24 +237,24 @@ find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';' %if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libbonjour.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libbonjour.so %endif %if 0%{!?_with_meanwhile:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libsametime.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libsametime.so %endif %if 0%{!?_with_mono:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/mono.so -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/*.dll +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/mono.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/*.dll %endif %if 0%{?_without_silc:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/libsilcpurple.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libsilcpurple.so %endif %if 0%{?_without_tcl:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/libpurple/tcl.so +rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/tcl.so %endif %if 0%{?_without_text:1} @@ -265,7 +265,7 @@ %find_lang %{name} -find $RPM_BUILD_ROOT%{_libdir}/libpurple -xtype f -print | \ +find $RPM_BUILD_ROOT%{_libdir}/purple-2 -xtype f -print | \ sed "s@^$RPM_BUILD_ROOT@@g" | \ grep -v /libbonjour.so | \ grep -v /libsametime.so | \ @@ -334,8 +334,8 @@ %dir %{_libdir}/pidgin %dir %{perl_vendorarch}/Purple -%attr(755, root, root) %{perl_vendorarch}/Purple/* -%attr(755, root, root) %{perl_vendorarch}/auto/Purple/GtkUI* +%attr(755, root, root) %{perl_vendorarch}/Pidgin.pm +%attr(755, root, root) %{perl_vendorarch}/auto/Pidgin %{_bindir}/pidgin %{_datadir}/pixmaps/pidgin @@ -352,9 +352,7 @@ %{_libdir}/libpurple.so.* %dir %{_libdir}/purple-2 %attr(755, root, root) %{perl_vendorarch}/Purple.pm -%dir %{perl_vendorarch}/auto/Purple -%attr(755, root, root) %{perl_vendorarch}/auto/Purple/Purple.so -%attr(755, root, root) %{perl_vendorarch}/auto/Purple/autosplit.ix +%attr(755, root, root) %{perl_vendorarch}/auto/Purple %{_datadir}/pixmaps/purple @@ -436,6 +434,9 @@ %endif %changelog +* Sun Apr 29 2007 Stu Tomlinson +- Update to reflect perl Purple::GtkUI -> Pidgin change + * Wed Apr 25 2007 Stu Tomlinson - Update libpurple to pick up plugins in %%{_libdir}/purple diff -r 3c4b00865a30 -r b7c550dab1bc pidgin/gtkconv.c --- a/pidgin/gtkconv.c Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin/gtkconv.c Sun Apr 29 14:44:36 2007 +0000 @@ -2370,8 +2370,13 @@ gtkconv = PIDGIN_CONVERSATION(conv); account = purple_conversation_get_account(conv); - if(account && account->gc) + + if(account && account->gc) { prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(account->gc->prpl); + } else { + gtkconv->u.im->icon_timer = 0; + return FALSE; + } gtkconv->auto_resize = TRUE; g_idle_add(reset_auto_resize_cb, gtkconv); diff -r 3c4b00865a30 -r b7c550dab1bc pidgin/gtkdocklet.c --- a/pidgin/gtkdocklet.c Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin/gtkdocklet.c Sun Apr 29 14:44:36 2007 +0000 @@ -118,6 +118,9 @@ DockletStatus newstatus = DOCKLET_STATUS_OFFLINE; gboolean pending = FALSE, connecting = FALSE; + /* get the current savedstatus */ + saved_status = purple_savedstatus_get_current(); + /* determine if any ims have unseen messages */ convs = get_pending_list(DOCKLET_TOOLTIP_LINE_LIMIT); @@ -168,7 +171,10 @@ g_list_free(convs); } else if (ui_ops->set_tooltip) { - ui_ops->set_tooltip(PIDGIN_NAME); + char *tooltip_text = g_strconcat(PIDGIN_NAME " - ", + purple_savedstatus_get_title(saved_status), NULL); + ui_ops->set_tooltip(tooltip_text); + g_free(tooltip_text); } for(l = purple_accounts_get_all(); l != NULL; l = l->next) { @@ -187,7 +193,6 @@ connecting = TRUE; } - saved_status = purple_savedstatus_get_current(); prim = purple_savedstatus_get_type(saved_status); if (pending) newstatus = DOCKLET_STATUS_PENDING; diff -r 3c4b00865a30 -r b7c550dab1bc pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin/gtkrequest.c Sun Apr 29 14:44:36 2007 +0000 @@ -472,7 +472,9 @@ if (title != NULL) gtk_window_set_title(GTK_WINDOW(dialog), title); - +#ifdef _WIN32 + gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE); +#endif gtk_dialog_add_button(GTK_DIALOG(dialog), text_to_stock(cancel_text), 0); @@ -580,6 +582,9 @@ if (title != NULL) gtk_window_set_title(GTK_WINDOW(dialog), title); +#ifdef _WIN32 + gtk_window_set_title(GTK_WINDOW(dialog), PIDGIN_ALERT_TITLE); +#endif for (i = 0; i < action_count; i++) { gtk_dialog_add_button(GTK_DIALOG(dialog), @@ -1068,6 +1073,9 @@ if (title != NULL) gtk_window_set_title(GTK_WINDOW(win), title); +#ifdef _WIN32 + gtk_window_set_title(GTK_WINDOW(win), PIDGIN_ALERT_TITLE); +#endif gtk_window_set_role(GTK_WINDOW(win), "multifield"); gtk_container_set_border_width(GTK_CONTAINER(win), PIDGIN_HIG_BORDER); @@ -1609,7 +1617,7 @@ data->cbs[0] = cancel_cb; data->cbs[1] = ok_cb; data->u.file.savedialog = FALSE; - + #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ dirsel = gtk_file_chooser_dialog_new( title ? title : _("Select Folder..."), diff -r 3c4b00865a30 -r b7c550dab1bc pidgin/gtksavedstatuses.c --- a/pidgin/gtksavedstatuses.c Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin/gtksavedstatuses.c Sun Apr 29 14:44:36 2007 +0000 @@ -1677,7 +1677,7 @@ GList *sorted, *cur; int i = 0; int index = -1; - GdkPixbuf *pixbuf, *emblem; + GdkPixbuf *pixbuf; GtkTreeIter iter; GtkCellRenderer *text_rend; GtkCellRenderer *icon_rend; diff -r 3c4b00865a30 -r b7c550dab1bc pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin/gtkstatusbox.c Sun Apr 29 14:44:36 2007 +0000 @@ -2071,7 +2071,9 @@ pidgin_status_box_set_buddy_icon(PidginStatusBox *status_box, PurpleStoredImage *img) { purple_imgstore_unref(status_box->buddy_icon_img); - status_box->buddy_icon_img = purple_imgstore_ref(img); + status_box->buddy_icon_img = img; + if (status_box->buddy_icon_img != NULL) + purple_imgstore_ref(status_box->buddy_icon_img); pidgin_status_box_redisplay_buddy_icon(status_box); } @@ -2225,7 +2227,8 @@ PurpleSavedStatusSub *sub = purple_savedstatus_get_substatus(ss, acct); if (sub) { const PurpleStatusType *sub_type = purple_savedstatus_substatus_get_type(sub); - if (!strcmp(purple_status_type_get_id(sub_type), + const char *subtype_status_id = purple_status_type_get_id(sub_type); + if (subtype_status_id && !strcmp(subtype_status_id, purple_status_type_get_id(acct_status_type))) found = TRUE; } diff -r 3c4b00865a30 -r b7c550dab1bc pidgin/gtkutils.c --- a/pidgin/gtkutils.c Sun Apr 29 14:42:26 2007 +0000 +++ b/pidgin/gtkutils.c Sun Apr 29 14:44:36 2007 +0000 @@ -3070,7 +3070,6 @@ for (i = 1; i < height - 1; i++) { row = pixels + (i*rowstride); if (row[3] != 0xff || row[rowstride-1] != 0xff) { - printf("0: %d, last: %d\n", row[3], row[rowstride-1]); return FALSE; } } diff -r 3c4b00865a30 -r b7c550dab1bc valgrind-suppressions --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/valgrind-suppressions Sun Apr 29 14:44:36 2007 +0000 @@ -0,0 +1,154 @@ +{ + X oddness 1 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:_XReply +} +{ + NSS + Memcheck:Cond + obj:/usr/lib/libsoftokn3.so + obj:/usr/lib/libsoftokn3.so + obj:/usr/lib/libsoftokn3.so + obj:/usr/lib/libsoftokn3.so +} +{ + X oddness 2 + Memcheck:Param + writev(vector[...]) + fun:writev + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:_X11TransWritev + fun:_XSend +} +{ + X oddness 3 + Memcheck:Cond + fun:XcursorImageHash + fun:XcursorNoticePutBitmap + fun:_XNoticePutBitmap + fun:XPutImage +} +{ + X oddness 4 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:XFlush +} +{ + X oddness 5 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:XDrawLine +} +{ + X oddness 6 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:_XEventsQueued +} +{ + File selector + Memcheck:Value4 + fun:_itoa_word + fun:_IO_vfprintf_internal + fun:_IO_vsprintf_internal + fun:_IO_sprintf +} +{ + File selector 2 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:XRenderComposite +} +{ + TCL leak + Memcheck:Leak + fun:malloc + fun:TclpAlloc + fun:Tcl_Alloc + fun:Tcl_StaticPackage +} +{ + FontConfig Maybe + Memcheck:Leak + fun:malloc + fun:FcStrCopy + fun:FcStrSetAdd + fun:FcLangSetCopy +} +{ + File selector 3 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:_XFlushGCCache +} +{ + File selector 4 + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:XCreateGC +} +{ + Something else + Memcheck:Param + write(buf) + fun:__write_nocancel + fun:_X11TransWrite + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:_XSetClipRectangles +} +{ + New conversation windows + Memcheck:Cond + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 +} +{ + New conversation windows 2 + Memcheck:Cond + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 + obj:/usr/lib/libgtk-x11-2.0.so.0.400.14 + obj:/usr/lib/libgobject-2.0.so.0.400.8 +} +{ + NSS Init + Memcheck:Leak + fun:malloc + fun:PR_Malloc + fun:PR_CreateStack + fun:_PR_InitFdCache + fun:_PR_InitIO + fun:_PR_ImplicitInitialization + fun:PR_Init + fun:rsa_nss_init + fun:GE_plugin_load + fun:gaim_plugin_load + fun:gaim_plugins_load_saved + fun:main +} +