view plugins/ChangeLog.API @ 11719:109ee3bfeac5

[gaim-migrate @ 14010] SF Patch #1333770 from corfe83 "Many times in gaim we use the function g_slist_remove(list,node->data) to remove an element from a GSList. If we already have the pointer to the node we want to delete, it is faster to send it the pointer to the node to delete rather than the data of the node (we can do this by calling g_slist_delete_link(list,node)). This change was made while looking at glib's documentation and the code in glib's gslist.c. This is because as the remove/delete function traverses each node in the list, it doesn't need to spend an extra memory access to retrieve the data for each element in the node it is traversing and then compare, it can simply compare the pointer. In my tests outside of gaim, this makes a big difference if the node you are deleting is at a high index in the list. However, even if you're deleting the first node, it about breaks even. So, I've found each case in gaim where we are calling g_slist_remove, and we already have the pointer to the appropriate node to delete (this is often the case when we're doing a for or while loop on a GSList). I've then replaced it with the appropriate call to g_slist_delete_link. I, however, didn't do this in situations where we are explicitly removing the first element in the list, because in those situations it is an unnecessary change. There should be no difference in behavior, but just in case I've tried running it with valgrind, which reports the same number of memory leaks after my patch as before my patch. Of course, I can't guarantee that my normal behavior on gaim is hitting all the functions I've changed, but in general testing it Works For Me (tm)." As with the last patch, this one may not have a practical performance impact (or maybe it does, I have no idea), but it's not worse for any case. Given two ways of doing things where one is always at least as fast and may be faster under some cases, I like to prefer that faster way. This doesn't make the code any uglier, so I'm applying. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Sat, 22 Oct 2005 20:48:18 +0000
parents bcc49c25ef90
children a8f8939b968e
line wrap: on
line source

Gaim: The Pimpin' Penguin IM Client that's good for the soul!

version 2.0.0:
	* Changed: All the status stuff. Yay!
	* Changed: gaim_prefs_connect_callback(), added handle parameter
	* Added:   gaim_prefs_disconnect_by_handle()
	* Removed: gaim_gtk_sound_{get,set}_mute() (replaced by the
	           /gaim/gtk/sound/mute preference)
	* Changed: gtk_imhtml_toolbar now descends from GtkHBox making it
	           easier to add your own widgets to it
	* Changed: gaim_find_conversation_with_account, added a "type" parameter
	* Changed: gaim_gtk_prefs_labeled_spin_button, the "key" parameter is
	           now a const char* instead of just a char*
	* Changed: gaim_gtk_prefs_labeled_entry, the "key" parameter is
	           now a const char* instead of just a char*
	* Changed: the add_buddy perl sub.  The argument now takes the account
	           as the first argument, and buddy and group as the second and
	           third.  It also adds the buddy to the server-side buddy
	           list of the given account.
	* Changed: gaim_blist_node_action_new, added a fourth argument, a GList
	           of GaimBlistNodeActions to be created as a submenu of the item.
	* Removed: gaim_escape_html(const char *html) (use
	           g_markup_escape_text(html, -1) instead)
	* Removed: gaim_accounts_sync, account changes are now scheduled to be saved
	           automatically
	* Removed: gaim_connection_connect
	* Removed: gaim_connection_disconnect
	* Removed: gaim_connection_register
	* Removed: gaim_accounts_auto_login
	* Removed: gaim_find_conversation, use gaim_find_conversation_with_account instead
	* Changed: gaim_connection_new, gaim_account_connect and gaim_account_register
	           no longer return a GaimConnection
	* Added:   a password field to GaimConnection, which only persists for the
	           session (when "remember password" is false, account->password is NEVER set)
	           Use gaim_connection_get_password(GaimConnection *gc)
	* Removed: serv_login
	* Removed: serv_close
	* Removed: serv_finish_login
	* Changed: keep_alive in GaimConnection is renamed to keepalive
	* Removed: gaim_chat_get_display_name
	* Added:   gaim_log_common_writer, gaim_log_common_lister,
	           gaim_log_common_sizer, and gaim_log_get_log_dir
	           to allow log formats that use standard Gaim log directory
	           to use Gaim's built-in code for these purposes.
	* Added:   GaimLogCommonLoggerData struct for a basic logger_data
	           struct to be used with "common" logger functions.
	* Removed: gaim_conversation_set_history, gaim_conversation_get_history,
	           and GaimConversation->history.  Use gtk_imhtml_get_markup
	           instead.
	* Removed: serv_rename_group
	* Renamed: set_gaim_user_dir to gaim_util_set_user_dir
	* Renamed: create_prpl_icon to gaim_gtk_create_prpl_icon
	* Changed: gaim_mkstemp, added a second argument, a boolean, of whether
	           or not the file is binary
	* Removed: Window flashing support in the core: gaim_conv_window_flash,
	           and flash UI operation for conversations.  Use signal
	           "received-im-msg" or similar.
	* Added:   gaim_gtk_blist_node_is_contact_expanded, returns TRUE if
	           the given blist node is a buddy inside an expanded contact,
	           or is itself an expanded contact
	* Added:   GaimLogSet struct, get_log_sets function to GaimLogLogger,
	           gaim_log_get_log_sets, gaim_log_set_compare
	* Changed: gaim_log_logger_new, rewritten
	* Changed: gaim_conv_window_remove_conversation()'s last argument to
	           be a GaimConversation.
	* Added:   gaim_privacy_check(), to check if a given user is allowed to
	           to send messages to the specified account
	* Changed: A new blocked icon: pixmaps/status/default/blocked.png
	* Removed: All warning stuff from the core.
	* Changed: gtk_imhtml_toggle_bold, gtk_imhtml_toggle_italic,
	           gtk_imhtml_toggle_underline, gtk_imhtml_toggle_strike:
	           no longer return a value
	* Added:   gtk_imhtml_clear_formatting()
	* Removed: gaim_gtkconv_get_dest_tab_at_xy(), instead use
	           gaim_gtkconv_get_tab_at_xy()
	* Added:   gtk_imhtml_delete to clear out part of a imhtml buffer
	* Changed: gaim_log_new(), added conv parameter
	* Added:   gaim_buddy_icons_get_full_path(), to get the full path
	           of a buddy icon setting
	* Changed: gaim_buddy_icon_new(), leaves a reference which the caller
	           owns. Use gaim_buddy_icon_unref() immediately if you don't
	           want a reference (the old behavior).
	* Changed: GAIM_CONV_UNKNOWN to GAIM_CONV_TYPE_UNKNOWN.
	* Changed: GAIM_CONV_IM to GAIM_CONV_TYPE_IM.
	* Changed: GAIM_CONV_CHAT to GAIM_CONV_TYPE_CHAT.
	* Changed: GAIM_CONV_MISC to GAIM_CONV_TYPE_MISC.
	* Changed: GAIM_CONV_ANY to GAIM_CONV_TYPE_ANY.
	* Changed: GaimConversationUiOps.write_conv, Replaced const char *who
	           with const char *name, const char *alias
	* Changed: gaim_conv_chat_add_users(), added extra_msgs and
	           new_arrivals (pass NULL and FALSE respectively, to get the
	           same behavior as before)
	* Changed: chat_add_users in GaimConversationUiOps, added aliases list
	* Removed: chat_add_user from GaimConversationUiOps
	* Changed: chat_rename_user in GaimConversationUiOps, added new_alias
	* Changed: GaimConversation.log became GList * GaimConversation.logs,
	           so that a conversation can have multiple logs at once
	* Changed: gaim_conv_chat_add_user, added extra_msgs list
	* Added:   CHAT_USERS_ALIAS_COLUMN, CHAT_USERS_COLOR_COLUMN,
	           CHAT_USERS_BUDDY_COLUMN to the list of columns for the chat
	           user list
	* Changed: gaim_notify_userinfo, removed primary and secondary args
	* Changed: GaimNotifyUiOps::notify_userinfo, removed title, primary,
	           and secondary args
	* Removed: uc from the GaimBuddy struct
	* Removed: gaim_sound_get_handle()
	* Removed: gaim_debug_vargs()
	* Added:   gaim_account_add_buddy()
	* Added:   gaim_account_add_buddies()
	* Added:   gaim_account_remove_buddy()
	* Added:   gaim_account_remove_buddies()
	* Added:   gaim_account_change_password()
	* Removed: serv_add_buddy(); use gaim_account_add_buddy() instead
	* Removed: serv_add_buddies(); use gaim_account_add_buddies() instead
	* Removed: serv_remove_buddy(); use gaim_account_remove_buddy() instead
	* Removed: serv_remove_buddies(); use gaim_account_remove_buddies()
	           instead
	* Removed: serv_change_passwd(); use gaim_account_change_password()
	           instead
	* Added:   gaim_conversation_close_logs(), to force a conversation's
	           log(s) to be closed. New logs will be opened as necessary.
	* Removed: GaimGtkImPane->a_virgin

	Signals:
	* Changed: "received-im-msg" and "received-chat-msg" to match, both
	           now pass a conversation pointer and flags
	* Changed: "receiving-im-msg" and "receving-chat-msg" to match, both
	           now pass a conversation pointer and a pointer to the flags.
	* Changed: "drawing-tooltip," the second argument is now a GString*
	           instead of a char**
	* Changed: Signal propagation now stops after a handler returns a
	           non-NULL value. This value is now returned. Previously,
	           all registered handlers were called and the value from the
	           last handler was used.
	* Changed: "chat-invited" handlers can now return a value to control
	           what happens to the invite (accept, reject, prompt the user).
	           See the Doxygen documentation for the details.
	* Added:   "file-recv-accept", "file-recv-start", "file-recv-cancel",
	           "file-recv-complete", "file-send-accept", "file-send-start",
	           "file-send-cancel", and "file-send-complete" signals.  See
	           the Doxygen documentation for the details.
	* Changed: Renamed "conversation-drag-end" to "conversation-dragging"
	           and emit before the conv. window swap happens. This prevents
	           the old conv window from being freed before the signal emits.
	* Added:   "buddy-added" and "buddy-removed", which are self-explanatory
	* Added:   "blist-node-aliased", an alias was set for a buddy, chat or
	           contact.  See the Doxygen documentation for the details.
	* Changed: "buddy-typing" and "buddy-typing-stopped", replaced the
	           GaimConversation* with GaimAccount*, const char *name.  Also,
	           the signal is now emitted regardless of whether a
	           conversation exists and regardless of whether the user is on
	           the buddy list.

version 1.0.0 (09/17/2004):
	* Added: get_chat_name to the GaimPluginProtocolInfo struct
	* Changed: gaim_blist_update_buddy_presence(), presence changed to
	           type gboolean
	* Changed: the versioning scheme, and all the plugin structs

version 0.82 (08/26/2004):
	Gaim API:
	* Removed: gaim_gtk_get_dispstyle(), gaim_gtk_change_text()
	* Removed: multi.h
	* Renamed: ui.h to gtkdialogs.h
	* Renamed: gtkinternal.h to gtkgaim.h
	* Renamed: show_info_dialog to gaim_gtkdialogs_info
	* Renamed: show_log_dialog to gaim_gtkdialogs_log
	* Renamed: show_warn_dialog to gaim_gtkdialogs_warn
	* Renamed: show_im_dialog to gaim_gtkdialogs_im
	* Renamed: gaim_gtkdialogs_new_im to gaim_gtkdialogs_im_with_user
	* Renamed: destroy_all_dialogs to gaim_gtkdialogs_destroy_all
	* Renamed: alias_dialog_bud to gaim_gtkdialogs_alias_buddy
	* Renamed: alias_dialog_contact to gaim_gtkdialogs_alias_contact
	* Renamed: alias_dialog_blist_chat to gaim_gtkdialogs_alias_chat
	* Renamed: show_confirm_del to gaim_gtkdialogs_remove_buddy
	* Renamed: show_confirm_del_group to gaim_gtkdialogs_remove_group
	* Renamed: show_confirm_del_blist_chat to gaim_gtkdialogs_remove_chat
	* Renamed: show_confirm_del_contact to gaim_gtkdialogs_remove_contact
	* Renamed: show_about to gaim_gtkdialogs_about
	* Added: gaim_notify_userinfo() and the associated notify_userinfo() UI op
			 (someone who knows just why we have this can edit here)

	Buddy List API:
	* Changed: gaim_blist_request_add_chat(), added name parameter
	* Added: gaim_contact_on_account()
	* Added: flags parameter to the GaimBlistNode struct

	Conversation API:
	* Added: gaim_gtkconv_button_new()

	Protocol Plugin API: v7
	* Added: chat_info_defaults to the GaimPluginProtocolInfo struct

	Signals:
	* Added: conversation-updated for any update to the data associated
	  with the conversation (topic, icon, adding to buddy list, etc.)

	Conversation API:
	* Changed: gaim_conv_chat_add_user() (added new_arrival parameter)

version 0.81 (08/05/2004):
	Commands API:
	* Most functions now have a void *data argument.

	Blist API:
	* Added: gaim_buddy_get_contact_alias
	* Renamed: gaim_get_buddy_alias to gaim_buddy_get_alias
	* Renamed: gaim_get_buddy_alias_only to gaim_buddy_get_alias_only

	Conversation API:
	* Changed: gaim_conv_chat_add_user(), added flags parameter
	* Changed: gaim_conv_chat_add_users(), added GList of flags parameter
	* Changed: gaim_conv_chat_get_users(), now returns a GList of
	  GaimConvChatBuddy's
	* Changed: gaim_conv_chat_set_users() now expects a GList of
	  GaimConvChatBuddy's
	* Added: gaim_conv_chat_set_user_flags()
	* Added: gaim_conv_chat_get_user_flags()
	* Added: gaim_conv_chat_find_user()
	* Added: gaim_conv_chat_cb_new()
	* Added: gaim_conv_chat_cb_find()
	* Added: gaim_conv_chat_cb_destroy()
	* Added: gaim_conv_chat_cb_get_name()

	Conversation UI ops:
	* Added: chat_update_user()

	Signals:
	* Changed: chat-buddy-joining & chat-buddy-joined now include the user's flags
	* Changed: chat-buddy-joining & chat-buddy-leaving are now booleans, return
	  TRUE if you don't want the join/leave to be displayed in the UI.
	* Added: chat-buddy-flags for when user's flags change
	  gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT (required for the new
	  chat-buddy-flags signal)
	* Added: account-modified for when account settings have been changed.

version 0.80 (07/15/2004):
	Gaim API:
	* Removed: PRPL numbers : gaim_account_set_protocol(),
	  gaim_account_get_protocol(), gaim_accounts_find_with_prpl_num,
	  gaim_prpl_num_to_id(), gaim_prpl_id_to_num(), GaimProtocol

	Protocol Plugin API: v6
	* Added: can_receive_file & send_file to the GaimPluginProtocolInfo struct

	Signals:
	* Changed "chat-invited" to also include the components hash table so
	  plugins can use serv_join_chat when the signal is emitted.
	* Added "chat-topic-changed" signal plugins know when a topic is changed.

version 0.79 (06/24/2004):
	Gaim API:
	* gaim_url_parse() now takes two additional parameters, which are used
	  for returning the username and password from the URL, if they exist.
	* Added: has_focus UI op to GaimConversationUiOps and
	  GaimConvWindowUiOps.
	* Added: gaim_conversation_has_focus() and gaim_conv_window_has_focus().
	* Removed: gaim_blist_save()

	Protocol Plugin API: v5
	* Changed: add_buddy, add_buddies, remove_buddy, remove_buddies,
	  rename_group and remove_group to take GaimBuddy's and
	  GaimGroup's consistently.
	* Removed: OPT_PROTO_BUDDY_ICON (replaced by icon_spec)
	* Added: icon_spec to the GaimPluginProtocolInfo struct

version 0.78 (05/30/2004):
	Plugin API: v4
	* Added: actions - for plugins to add to the new Plugin Actions menu

	Loader Plugin API: v2 (no changes)

	Protocol Plugin API: v4
	* Removed: set_dir, get_dir and dir_search (not used, AIM-centric)
	* Removed: actions (replaced by generic plugin actions)

	Perl Plugin API: v2 (no changes)
	TCL Plugin API: (no changes)

	Signals:
	* Added: "blist-node-extended-menu" for extending Buddy, Chat and
			 Group right-click menus
	* Added: "drawing-tooltip" for plugins to allow plugins to change text
			 appearing in tooltips
	* Added: "gtkblist-created"
	* Added: "receiving-im-msg" and "receiving-chat-msg" (these behave
			  exactly like received-*-msg used to)
	* Added: "buddy-idle-updated" signal, for when the idle time changes.
	* Changed: "received-im-msg" and "received-chat-msg" no longer pass
			   pointers to who, message and flags, and are now void.
	* Removed: "drawing-menu" - it was UI sepecific and
			   "blist-node-extended-menu" is superior

version 0.77 (04/22/2004):
	Loader & Protocol Plugins independantly versioned
	Plugin loading now checks versioning on plugins (Standard, Loader &
	Protocol)
	new GAIM_{PLUGIN,PRPL,LOADER}_API_VERSION constants

	Plugin API: v3
	* Added: prefs_info for UI independant plugin prefs

	Loader Plugin API: v2
	* Added: api_version at top of GaimPluginLoaderInfo struct

	Protocol Plugin API: v2
	* Added: api_version at top of GaimPluginProtocolInfo struct
	* Added: chat_menu for protocol specific extensions to the chat menu
	* Removed: get_away "Nada used it. Pink elephants on parade."
	* Removed: protocol_prefs (replaced by generic plugin prefs_info)

	Perl Plugin API: v2 (no changes)
	TCL API: (no changes)

	Signals:
	* Added: "conversation-drag-ended"

version 0.76 (04/01/2004):
	Plugin API: v2
	Perl Plugin API: v2
	Loader Plugin API: (not versioned)
	Protocol Plugin API: (not versioned)
	* Added: protocol_prefs for protocol specific preferences
	* Added: reject_chat so protocols can act on chat invite rejection

	TCL Plugin API: (not versioned)
	* Changes to plugin registration to show descriptions