Mercurial > pidgin.yaz
comparison src/gtkconv.c @ 7008:ecce6b23ea25
[gaim-migrate @ 7565]
plug a big memleak, and simplify some code in the process
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Mon, 29 Sep 2003 04:30:35 +0000 |
parents | 083d1e4a9c78 |
children | feb3d21a7794 |
comparison
equal
deleted
inserted
replaced
7007:da1430478acf | 7008:ecce6b23ea25 |
---|---|
4958 { | 4958 { |
4959 GaimGtkConversation *gtkconv; | 4959 GaimGtkConversation *gtkconv; |
4960 GaimAccount *account; | 4960 GaimAccount *account; |
4961 const char *name; | 4961 const char *name; |
4962 GaimBuddy *b; | 4962 GaimBuddy *b; |
4963 GdkPixbuf *status = NULL; | |
4963 | 4964 |
4964 gtkconv = GAIM_GTK_CONVERSATION(conv); | 4965 gtkconv = GAIM_GTK_CONVERSATION(conv); |
4965 name = gaim_conversation_get_name(conv); | 4966 name = gaim_conversation_get_name(conv); |
4966 account = gaim_conversation_get_account(conv); | 4967 account = gaim_conversation_get_account(conv); |
4967 | 4968 |
4968 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { | 4969 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { |
4969 b = gaim_find_buddy(account, name); | 4970 b = gaim_find_buddy(account, name); |
4970 if (b != NULL) { | 4971 if (b != NULL) { |
4971 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), | 4972 status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)b, |
4972 gaim_gtk_blist_get_status_icon((GaimBlistNode *)b, | 4973 GAIM_STATUS_ICON_SMALL); |
4973 GAIM_STATUS_ICON_SMALL)); | 4974 } |
4974 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), | 4975 } |
4975 gaim_gtk_blist_get_status_icon((GaimBlistNode *)b, | 4976 |
4976 GAIM_STATUS_ICON_SMALL)); | 4977 if (!status) { |
4977 } else { | 4978 GdkPixbuf *pixbuf; |
4978 GdkPixbuf *pixbuf, *scale; | |
4979 pixbuf = create_prpl_icon(account); | |
4980 | |
4981 if (pixbuf) { | |
4982 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR); | |
4983 | |
4984 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), scale); | |
4985 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), scale); | |
4986 | |
4987 g_object_unref(pixbuf); | |
4988 g_object_unref(scale); | |
4989 } else { | |
4990 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), NULL); | |
4991 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), NULL); | |
4992 } | |
4993 } | |
4994 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { | |
4995 GdkPixbuf *pixbuf, *scale; | |
4996 pixbuf = create_prpl_icon(account); | 4979 pixbuf = create_prpl_icon(account); |
4997 | 4980 |
4998 if (pixbuf) { | 4981 if (pixbuf) { |
4999 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR); | 4982 status = gdk_pixbuf_scale_simple(pixbuf, 15, 15, |
5000 | 4983 GDK_INTERP_BILINEAR); |
5001 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), scale); | |
5002 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), scale); | |
5003 | |
5004 g_object_unref(pixbuf); | 4984 g_object_unref(pixbuf); |
5005 g_object_unref(scale); | 4985 } |
5006 } else { | 4986 } |
5007 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), NULL); | 4987 |
5008 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), NULL); | 4988 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); |
5009 } | 4989 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); |
5010 } | 4990 |
4991 if(status) | |
4992 g_object_unref(status); | |
5011 } | 4993 } |
5012 | 4994 |
5013 static void | 4995 static void |
5014 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) | 4996 gaim_gtkconv_updated(GaimConversation *conv, GaimConvUpdateType type) |
5015 { | 4997 { |