Mercurial > pidgin.yaz
view src/gtkpounce.h @ 11701:5d7da4056644
[gaim-migrate @ 13992]
SF Patch #1332870, from corfe83
"In gtkimhtml.c, in function gtk_smiley_tree_destroy, in
the while loop, we go through the tree and add all the
nodes to be deleted to a GSList. However, we add them
by appending them to the list, but the order of the
list doesn't matter. Because GSList's don't keep track
of the last item in the list, this means each step of
the loop (when we append) we are incrementing through
the whole list. In my tests, on closing the preference
box, this loop was gone through more than 1,000 times,
and at many stages this list it is appending to is well
over 50 elements long.
I've changed it to prepend items to the list, which
works just the same (although destroying items in the
tree in a different order), and is much faster (prepend
works in O(1) time, as opposed to O(N) time)."
I think the moral of the story is, when order doesn't matter, use g_[s]list_prepend instead of g_[s]list_append.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Thu, 20 Oct 2005 08:01:03 +0000 |
parents | db62420a53a2 |
children | 370f9d7868f9 |
line wrap: on
line source
/** * @file gtkpounce.h GTK+ Buddy Pounce API * @ingroup gtkui * * gaim * * Gaim is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * source distribution. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _GAIM_GTKPOUNCE_H_ #define _GAIM_GTKPOUNCE_H_ #include "pounce.h" /** * Displays a New Buddy Pounce or Edit Buddy Pounce dialog. * * @param account The optional account to use. * @param name The optional name to pounce on. * @param cur_pounce The current buddy pounce, if editing an existing one. */ void gaim_gtkpounce_dialog_show(GaimAccount *account, const char *name, GaimPounce *cur_pounce); /** * Displays all registered buddy pounces in a menu. * * @param menu The menu to add to. */ void gaim_gtkpounce_menu_build(GtkWidget *menu); /** * Initializes the GTK+ pounces subsystem. */ void gaim_gtk_pounces_init(void); #endif /* _GAIM_GTKPOUNCE_H_ */