Mercurial > pidgin.yaz
annotate src/gtkdebug.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 | 50224ac8184d |
children | fc464a0abccc |
rev | line source |
---|---|
5212 | 1 /** |
5497 | 2 * @file gtkdebug.h GTK+ Debug API |
5212 | 3 * @ingroup gtkui |
4 * | |
5 * gaim | |
6 * | |
8046 | 7 * Gaim is the legal property of its developers, whose names are too numerous |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
10 * |
5212 | 11 * This program is free software; you can redistribute it and/or modify |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
9713 | 25 #ifndef _GAIM_GTKDEBUG_H_ |
26 #define _GAIM_GTKDEBUG_H_ | |
5212 | 27 |
28 #include "debug.h" | |
29 | |
30 /** | |
5625
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
31 * Initializes the GTK+ debug system. |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
32 */ |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
33 void gaim_gtk_debug_init(void); |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
34 |
73c9dc20e41a
[gaim-migrate @ 6032]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
35 /** |
11033
50224ac8184d
[gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents:
10814
diff
changeset
|
36 * Uninitialized the GTK+ debug system. |
50224ac8184d
[gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents:
10814
diff
changeset
|
37 */ |
50224ac8184d
[gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents:
10814
diff
changeset
|
38 void gaim_gtk_debug_uninit(void); |
50224ac8184d
[gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents:
10814
diff
changeset
|
39 |
50224ac8184d
[gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents:
10814
diff
changeset
|
40 /** |
10087 | 41 * Get the handle for the GTK+ debug system. |
42 * | |
43 * @return the handle to the debug system | |
44 */ | |
45 void *gaim_gtk_debug_get_handle(); | |
46 | |
47 /** | |
5212 | 48 * Shows the debug window. |
49 */ | |
50 void gaim_gtk_debug_window_show(void); | |
51 | |
52 /** | |
53 * Hides the debug window. | |
54 */ | |
55 void gaim_gtk_debug_window_hide(void); | |
56 | |
57 /** | |
10814
364a2ef907ae
[gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents:
10087
diff
changeset
|
58 * Returns the UI operations structure for GTK+ debug output. |
5212 | 59 * |
10814
364a2ef907ae
[gaim-migrate @ 12468]
Luke Schierer <lschiere@pidgin.im>
parents:
10087
diff
changeset
|
60 * @return The GTK+ UI debug operations structure. |
5212 | 61 */ |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
62 GaimDebugUiOps *gaim_gtk_debug_get_ui_ops(void); |
5212 | 63 |
9713 | 64 #endif /* _GAIM_GTKDEBUG_H_ */ |