Mercurial > pidgin.yaz
comparison src/buddy.c @ 4168:ebfb80bbe1ed
[gaim-migrate @ 4397]
(00:16:51) faceprint: apply my g-signal patch too! </whine>
(00:17:02) ChipX86: the what?
(00:17:20) faceprint: sorry
(00:17:23) faceprint: g-timeout, rather
(00:17:28) ChipX86: ah good
(00:17:33) faceprint: http://faceprint.com/code/gaim/g-timeout.20030101.1301.diff
(00:17:33) ChipX86: yes, APPLY THAT
(00:17:38) ChipX86: I need that
(00:17:40) LSchiere: one at a time
(00:17:51) faceprint: ChipX86: you need that?
(00:17:56) ChipX86: for the conversation rewrite
(00:17:59) faceprint: ahh
(00:18:08) faceprint: it also fixes a memleak for msn users
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Thu, 02 Jan 2003 05:20:55 +0000 |
parents | 7002b6f16bdf |
children | 88ebcfcc3217 |
comparison
equal
deleted
inserted
replaced
4167:7002b6f16bdf | 4168:ebfb80bbe1ed |
---|---|
143 m = g_slist_next(m); | 143 m = g_slist_next(m); |
144 bs->connlist = g_slist_remove(bs->connlist, g->gc); | 144 bs->connlist = g_slist_remove(bs->connlist, g->gc); |
145 if (!bs->connlist) { | 145 if (!bs->connlist) { |
146 gs->members = g_slist_remove(gs->members, bs); | 146 gs->members = g_slist_remove(gs->members, bs); |
147 if (bs->log_timer > 0) | 147 if (bs->log_timer > 0) |
148 gtk_timeout_remove(bs->log_timer); | 148 g_source_remove(bs->log_timer); |
149 bs->log_timer = 0; | 149 bs->log_timer = 0; |
150 remove_buddy_show(gs, bs); | 150 remove_buddy_show(gs, bs); |
151 g_free(bs->show); | 151 g_free(bs->show); |
152 g_free(bs->name); | 152 g_free(bs->name); |
153 g_free(bs); | 153 g_free(bs); |
197 m = g_slist_next(m); | 197 m = g_slist_next(m); |
198 bs->connlist = g_slist_remove(bs->connlist, g->gc); | 198 bs->connlist = g_slist_remove(bs->connlist, g->gc); |
199 if (!bs->connlist) { | 199 if (!bs->connlist) { |
200 gs->members = g_slist_remove(gs->members, bs); | 200 gs->members = g_slist_remove(gs->members, bs); |
201 if (bs->log_timer > 0) | 201 if (bs->log_timer > 0) |
202 gtk_timeout_remove(bs->log_timer); | 202 g_source_remove(bs->log_timer); |
203 bs->log_timer = 0; | 203 bs->log_timer = 0; |
204 remove_buddy_show(gs, bs); | 204 remove_buddy_show(gs, bs); |
205 g_free(bs->show); | 205 g_free(bs->show); |
206 g_free(bs->name); | 206 g_free(bs->name); |
207 g_free(bs); | 207 g_free(bs); |
272 if (g_strcasecmp(b->name, prevname)) { | 272 if (g_strcasecmp(b->name, prevname)) { |
273 bs->connlist = g_slist_remove(bs->connlist, b->gc); | 273 bs->connlist = g_slist_remove(bs->connlist, b->gc); |
274 if (!bs->connlist) { | 274 if (!bs->connlist) { |
275 gs->members = g_slist_remove(gs->members, bs); | 275 gs->members = g_slist_remove(gs->members, bs); |
276 if (bs->log_timer > 0) | 276 if (bs->log_timer > 0) |
277 gtk_timeout_remove(bs->log_timer); | 277 g_source_remove(bs->log_timer); |
278 bs->log_timer = 0; | 278 bs->log_timer = 0; |
279 remove_buddy_show(gs, bs); | 279 remove_buddy_show(gs, bs); |
280 g_free(bs->show); | 280 g_free(bs->show); |
281 g_free(bs->name); | 281 g_free(bs->name); |
282 g_free(bs); | 282 g_free(bs); |
301 while (m) { | 301 while (m) { |
302 b = (struct buddy_show *)m->data; | 302 b = (struct buddy_show *)m->data; |
303 debug_printf("buddy_show still exists: %s\n", b->name); | 303 debug_printf("buddy_show still exists: %s\n", b->name); |
304 m = g_slist_remove(m, b); | 304 m = g_slist_remove(m, b); |
305 if (b->log_timer > 0) | 305 if (b->log_timer > 0) |
306 gtk_timeout_remove(b->log_timer); | 306 g_source_remove(b->log_timer); |
307 b->log_timer = 0; | 307 b->log_timer = 0; |
308 gtk_tree_remove_item(GTK_TREE(g->tree), b->item); | 308 gtk_tree_remove_item(GTK_TREE(g->tree), b->item); |
309 g_free(b->show); | 309 g_free(b->show); |
310 g_free(b->name); | 310 g_free(b->name); |
311 g_free(b); | 311 g_free(b); |
902 if (g_slist_find(bs->connlist, gc)) { | 902 if (g_slist_find(bs->connlist, gc)) { |
903 bs->connlist = g_slist_remove(bs->connlist, gc); | 903 bs->connlist = g_slist_remove(bs->connlist, gc); |
904 if (!g_slist_length(bs->connlist)) { | 904 if (!g_slist_length(bs->connlist)) { |
905 gs->members = g_slist_remove(gs->members, bs); | 905 gs->members = g_slist_remove(gs->members, bs); |
906 if (bs->log_timer > 0) | 906 if (bs->log_timer > 0) |
907 gtk_timeout_remove(bs->log_timer); | 907 g_source_remove(bs->log_timer); |
908 bs->log_timer = 0; | 908 bs->log_timer = 0; |
909 remove_buddy_show(gs, bs); | 909 remove_buddy_show(gs, bs); |
910 g_free(bs->show); | 910 g_free(bs->show); |
911 g_free(bs->name); | 911 g_free(bs->name); |
912 g_free(bs); | 912 g_free(bs); |
1010 gtk_tree_remove_item(GTK_TREE(buddies), gs->item); | 1010 gtk_tree_remove_item(GTK_TREE(buddies), gs->item); |
1011 while (m) { | 1011 while (m) { |
1012 bs = (struct buddy_show *)m->data; | 1012 bs = (struct buddy_show *)m->data; |
1013 m = g_slist_remove(m, bs); | 1013 m = g_slist_remove(m, bs); |
1014 if (bs->log_timer > 0) | 1014 if (bs->log_timer > 0) |
1015 gtk_timeout_remove(bs->log_timer); | 1015 g_source_remove(bs->log_timer); |
1016 g_free(bs->show); | 1016 g_free(bs->show); |
1017 g_free(bs->name); | 1017 g_free(bs->name); |
1018 g_free(bs); | 1018 g_free(bs); |
1019 } | 1019 } |
1020 g_free(gs->name); | 1020 g_free(gs->name); |
2097 gtk_window_present(GTK_WINDOW(mainwindow)); | 2097 gtk_window_present(GTK_WINDOW(mainwindow)); |
2098 } | 2098 } |
2099 } | 2099 } |
2100 } | 2100 } |
2101 | 2101 |
2102 static gint log_timeout(struct buddy_show *b) | 2102 static gboolean log_timeout(gpointer data) |
2103 { | 2103 { |
2104 struct buddy_show *b = data; | |
2104 /* this part is really just a bad hack because of a bug I can't find */ | 2105 /* this part is really just a bad hack because of a bug I can't find */ |
2105 GSList *s = shows; | 2106 GSList *s = shows; |
2106 while (s) { | 2107 while (s) { |
2107 struct group_show *gs = s->data; | 2108 struct group_show *gs = s->data; |
2108 GSList *m = gs->members; | 2109 GSList *m = gs->members; |
2114 if (m != NULL) | 2115 if (m != NULL) |
2115 break; | 2116 break; |
2116 s = s->next; | 2117 s = s->next; |
2117 } | 2118 } |
2118 if (!s) | 2119 if (!s) |
2119 return 0; | 2120 return FALSE; |
2120 | 2121 |
2121 /* this is the real part. */ | 2122 /* this is the real part. */ |
2122 if (!b->connlist) { | 2123 if (!b->connlist) { |
2123 struct group_show *g = find_gs_by_bs(b); | 2124 struct group_show *g = find_gs_by_bs(b); |
2124 g->members = g_slist_remove(g->members, b); | 2125 g->members = g_slist_remove(g->members, b); |
2131 if (blist) | 2132 if (blist) |
2132 gtk_tree_remove_item(GTK_TREE(buddies), g->item); | 2133 gtk_tree_remove_item(GTK_TREE(buddies), g->item); |
2133 g_free(g->name); | 2134 g_free(g->name); |
2134 g_free(g); | 2135 g_free(g); |
2135 } | 2136 } |
2136 gtk_timeout_remove(b->log_timer); | 2137 g_source_remove(b->log_timer); |
2137 b->log_timer = 0; | 2138 b->log_timer = 0; |
2138 g_free(b->name); | 2139 g_free(b->name); |
2139 g_free(b->show); | 2140 g_free(b->show); |
2140 g_free(b); | 2141 g_free(b); |
2141 } else { | 2142 } else { |
2155 gtk_widget_show(b->pix); | 2156 gtk_widget_show(b->pix); |
2156 if (!(blist_options & OPT_BLIST_SHOW_PIXMAPS)) | 2157 if (!(blist_options & OPT_BLIST_SHOW_PIXMAPS)) |
2157 gtk_widget_hide(b->pix); | 2158 gtk_widget_hide(b->pix); |
2158 gdk_pixmap_unref(pm); | 2159 gdk_pixmap_unref(pm); |
2159 gdk_bitmap_unref(bm); | 2160 gdk_bitmap_unref(bm); |
2160 gtk_timeout_remove(b->log_timer); | 2161 g_source_remove(b->log_timer); |
2161 b->log_timer = 0; | 2162 b->log_timer = 0; |
2162 b->sound = 0; | 2163 b->sound = 0; |
2163 } | 2164 } |
2164 return 0; | 2165 return FALSE; |
2165 } | 2166 } |
2166 | 2167 |
2167 static char *caps_string(guint caps) | 2168 static char *caps_string(guint caps) |
2168 { | 2169 { |
2169 static char buf[256], *tmp; | 2170 static char buf[256], *tmp; |
2388 gtk_widget_show(bs->pix); | 2389 gtk_widget_show(bs->pix); |
2389 gdk_pixmap_unref(pm); | 2390 gdk_pixmap_unref(pm); |
2390 gdk_bitmap_unref(bm); | 2391 gdk_bitmap_unref(bm); |
2391 b->present = 2; | 2392 b->present = 2; |
2392 if (bs->log_timer > 0) | 2393 if (bs->log_timer > 0) |
2393 gtk_timeout_remove(bs->log_timer); | 2394 g_source_remove(bs->log_timer); |
2394 bs->log_timer = gtk_timeout_add(10000, (GtkFunction)log_timeout, bs); | 2395 bs->log_timer = g_timeout_add(10000, log_timeout, bs); |
2395 if ((bs->sound != 2) && (im_options & OPT_IM_LOGON)) { | 2396 if ((bs->sound != 2) && (im_options & OPT_IM_LOGON)) { |
2396 struct conversation *c = find_conversation(b->name); | 2397 struct conversation *c = find_conversation(b->name); |
2397 if (c) { | 2398 if (c) { |
2398 char tmp[1024]; | 2399 char tmp[1024]; |
2399 g_snprintf(tmp, sizeof(tmp), _("%s logged in."), b->show); | 2400 g_snprintf(tmp, sizeof(tmp), _("%s logged in."), b->show); |
2441 if (blist_options & OPT_BLIST_POPUP) | 2442 if (blist_options & OPT_BLIST_POPUP) |
2442 gdk_window_show(blist->window); | 2443 gdk_window_show(blist->window); |
2443 bs->connlist = g_slist_remove(bs->connlist, gc); | 2444 bs->connlist = g_slist_remove(bs->connlist, gc); |
2444 update_num_group(gs); | 2445 update_num_group(gs); |
2445 if (bs->log_timer > 0) | 2446 if (bs->log_timer > 0) |
2446 gtk_timeout_remove(bs->log_timer); | 2447 g_source_remove(bs->log_timer); |
2447 bs->log_timer = gtk_timeout_add(10000, (GtkFunction)log_timeout, bs); | 2448 bs->log_timer = g_timeout_add(10000, log_timeout, bs); |
2448 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, NULL, logout_icon_xpm); | 2449 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, NULL, logout_icon_xpm); |
2449 gtk_widget_hide(bs->pix); | 2450 gtk_widget_hide(bs->pix); |
2450 gtk_pixmap_set(GTK_PIXMAP(bs->pix), pm, bm); | 2451 gtk_pixmap_set(GTK_PIXMAP(bs->pix), pm, bm); |
2451 gtk_widget_show(bs->pix); | 2452 gtk_widget_show(bs->pix); |
2452 gdk_pixmap_unref(pm); | 2453 gdk_pixmap_unref(pm); |