comparison src/conversation.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 d3c8d2b40494
children 858822a27529
comparison
equal deleted inserted replaced
4167:7002b6f16bdf 4168:ebfb80bbe1ed
362 g_free(c->send_history->data); 362 g_free(c->send_history->data);
363 c->send_history = c->send_history->next; 363 c->send_history = c->send_history->next;
364 } 364 }
365 g_list_free(c->send_history); 365 g_list_free(c->send_history);
366 if (c->typing_timeout) 366 if (c->typing_timeout)
367 gtk_timeout_remove(c->typing_timeout); 367 g_source_remove(c->typing_timeout);
368 if (c->type_again_timeout) 368 if (c->type_again_timeout)
369 gtk_timeout_remove(c->type_again_timeout); 369 g_source_remove(c->type_again_timeout);
370 g_string_free(c->history, TRUE); 370 g_string_free(c->history, TRUE);
371 g_free(c); 371 g_free(c);
372 } 372 }
373 373
374 void update_log_convs() 374 void update_log_convs()
1136 1136
1137 static void got_typing_keypress(struct conversation *c, gboolean first) { 1137 static void got_typing_keypress(struct conversation *c, gboolean first) {
1138 /* we know we got something, so we at least have to make sure we don't send 1138 /* we know we got something, so we at least have to make sure we don't send
1139 * TYPED any time soon */ 1139 * TYPED any time soon */
1140 if(c->type_again_timeout) 1140 if(c->type_again_timeout)
1141 gtk_timeout_remove(c->type_again_timeout); 1141 g_source_remove(c->type_again_timeout);
1142 c->type_again_timeout = gtk_timeout_add(SEND_TYPED_TIMEOUT, send_typed, c); 1142 c->type_again_timeout = g_timeout_add(SEND_TYPED_TIMEOUT, send_typed, c);
1143 1143
1144 /* we send typed if this is the first character typed, or if we're due 1144 /* we send typed if this is the first character typed, or if we're due
1145 * to send another one */ 1145 * to send another one */
1146 if(first || (c->type_again != 0 && time(NULL) > c->type_again)) { 1146 if(first || (c->type_again != 0 && time(NULL) > c->type_again)) {
1147 int timeout = serv_send_typing(c->gc, c->name, TYPING); 1147 int timeout = serv_send_typing(c->gc, c->name, TYPING);
1160 1160
1161 if (misc_options & OPT_MISC_STEALTH_TYPING) 1161 if (misc_options & OPT_MISC_STEALTH_TYPING)
1162 return; 1162 return;
1163 1163
1164 if(gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) { 1164 if(gtk_text_iter_is_start(start_pos) && gtk_text_iter_is_end(end_pos)) {
1165 if(c->type_again_timeout) 1165 if(c->type_again_timeout) {
1166 gtk_timeout_remove(c->type_again_timeout); 1166 g_source_remove(c->type_again_timeout);
1167 c->type_again_timeout = 0;
1168 }
1167 serv_send_typing(c->gc, c->name, NOT_TYPING); 1169 serv_send_typing(c->gc, c->name, NOT_TYPING);
1168 } else { 1170 } else {
1169 /* we're deleting, but not all of it, so it counts as typing */ 1171 /* we're deleting, but not all of it, so it counts as typing */
1170 got_typing_keypress(c, FALSE); 1172 got_typing_keypress(c, FALSE);
1171 } 1173 }
2775 g_free(buf); 2777 g_free(buf);
2776 } 2778 }
2777 } 2779 }
2778 2780
2779 /* This returns a boolean, so that it can timeout */ 2781 /* This returns a boolean, so that it can timeout */
2780 gboolean reset_typing(char *name) { 2782 gboolean reset_typing(gpointer data) {
2783 char *name = data;
2781 struct conversation *c = find_conversation(name); 2784 struct conversation *c = find_conversation(name);
2782 if (!c) { 2785 if (!c)
2783 g_free(name);
2784 return FALSE; 2786 return FALSE;
2785 }
2786 2787
2787 /* Reset the title (if necessary) */ 2788 /* Reset the title (if necessary) */
2788 c->typing_state = NOT_TYPING; 2789 c->typing_state = NOT_TYPING;
2789 update_convo_status(c); 2790 update_convo_status(c);
2790 2791
2791 g_free(name);
2792 c->typing_timeout = 0; 2792 c->typing_timeout = 0;
2793 return FALSE; 2793 return FALSE;
2794 } 2794 }
2795 2795
2796 void show_conv(struct conversation *c) 2796 void show_conv(struct conversation *c)
3515 gtk_widget_queue_draw(c->icon); 3515 gtk_widget_queue_draw(c->icon);
3516 if (bm) 3516 if (bm)
3517 gdk_bitmap_unref(bm); 3517 gdk_bitmap_unref(bm);
3518 delay = gdk_pixbuf_animation_iter_get_delay_time(c->iter) / 10; 3518 delay = gdk_pixbuf_animation_iter_get_delay_time(c->iter) / 10;
3519 3519
3520 c->icon_timer = gtk_timeout_add(delay * 10, redraw_icon, c); 3520 c->icon_timer = g_timeout_add(delay * 10, redraw_icon, c);
3521 return FALSE; 3521 return FALSE;
3522 } 3522 }
3523 3523
3524 static void stop_anim(GtkObject *obj, struct conversation *c) 3524 static void stop_anim(GtkObject *obj, struct conversation *c)
3525 { 3525 {
3526 if (c->icon_timer) 3526 if (c->icon_timer)
3527 gtk_timeout_remove(c->icon_timer); 3527 g_source_remove(c->icon_timer);
3528 c->icon_timer = 0; 3528 c->icon_timer = 0;
3529 } 3529 }
3530 3530
3531 static void start_anim(GtkObject *obj, struct conversation *c) 3531 static void start_anim(GtkObject *obj, struct conversation *c)
3532 { 3532 {
3533 int delay; 3533 int delay;
3534 delay = gdk_pixbuf_animation_iter_get_delay_time(c->iter) / 10; 3534 delay = gdk_pixbuf_animation_iter_get_delay_time(c->iter) / 10;
3535 if (c->anim) 3535 if (c->anim)
3536 c->icon_timer = gtk_timeout_add(delay * 10, redraw_icon, c); 3536 c->icon_timer = g_timeout_add(delay * 10, redraw_icon, c);
3537 } 3537 }
3538 3538
3539 static int des_save_icon(GtkObject *obj, GdkEvent *e, struct conversation *c) 3539 static int des_save_icon(GtkObject *obj, GdkEvent *e, struct conversation *c)
3540 { 3540 {
3541 gtk_widget_destroy(c->save_icon); 3541 gtk_widget_destroy(c->save_icon);
3650 c->icon = NULL; 3650 c->icon = NULL;
3651 if (c->anim) 3651 if (c->anim)
3652 gdk_pixbuf_animation_unref(c->anim); 3652 gdk_pixbuf_animation_unref(c->anim);
3653 c->anim = NULL; 3653 c->anim = NULL;
3654 if (c->icon_timer) 3654 if (c->icon_timer)
3655 gtk_timeout_remove(c->icon_timer); 3655 g_source_remove(c->icon_timer);
3656 c->icon_timer = 0; 3656 c->icon_timer = 0;
3657 if(c->iter) 3657 if(c->iter)
3658 g_object_unref(G_OBJECT(c->iter)); 3658 g_object_unref(G_OBJECT(c->iter));
3659 } 3659 }
3660 3660
3728 MAX(gdk_pixbuf_get_height(buf) * sf / 3728 MAX(gdk_pixbuf_get_height(buf) * sf /
3729 gdk_pixbuf_animation_get_height(c->anim), 1), 3729 gdk_pixbuf_animation_get_height(c->anim), 1),
3730 GDK_INTERP_NEAREST); 3730 GDK_INTERP_NEAREST);
3731 3731
3732 if (delay) 3732 if (delay)
3733 c->icon_timer = gtk_timeout_add(delay * 10, redraw_icon, c); 3733 c->icon_timer = g_timeout_add(delay * 10, redraw_icon, c);
3734 3734
3735 3735
3736 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100); 3736 gdk_pixbuf_render_pixmap_and_mask(scale, &pm, &bm, 100);
3737 gdk_pixbuf_unref(scale); 3737 gdk_pixbuf_unref(scale);
3738 3738