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);