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_ */