Mercurial > pidgin.yaz
comparison libpurple/protocols/msn/slp.c @ 16390:4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 25 Apr 2007 21:48:56 +0000 |
parents | d4c79390d424 |
children | 24bbd7e46bfe |
comparison
equal
deleted
inserted
replaced
16389:493ca924c199 | 16390:4fc51a87ce42 |
---|---|
246 const char *euf_guid, const char *context) | 246 const char *euf_guid, const char *context) |
247 { | 247 { |
248 if (!strcmp(euf_guid, "A4268EEC-FEC5-49E5-95C3-F126696BDBF6")) | 248 if (!strcmp(euf_guid, "A4268EEC-FEC5-49E5-95C3-F126696BDBF6")) |
249 { | 249 { |
250 /* Emoticon or UserDisplay */ | 250 /* Emoticon or UserDisplay */ |
251 char *content; | |
252 gsize len; | |
251 MsnSlpSession *slpsession; | 253 MsnSlpSession *slpsession; |
252 MsnSlpLink *slplink; | 254 MsnSlpLink *slplink; |
253 MsnSlpMessage *slpmsg; | 255 MsnSlpMessage *slpmsg; |
254 MsnObject *obj; | 256 MsnObject *obj; |
255 char *msnobj_data; | 257 char *msnobj_data; |
256 const char *file_name; | 258 PurpleStoredImage *img; |
257 char *content; | |
258 gsize len; | |
259 int type; | 259 int type; |
260 | 260 |
261 /* Send Ok */ | 261 /* Send Ok */ |
262 content = g_strdup_printf("SessionID: %lu\r\n\r\n", | 262 content = g_strdup_printf("SessionID: %lu\r\n\r\n", |
263 slpcall->session_id); | 263 slpcall->session_id); |
279 purple_debug_error("msn", "Wrong object?\n"); | 279 purple_debug_error("msn", "Wrong object?\n"); |
280 msn_object_destroy(obj); | 280 msn_object_destroy(obj); |
281 g_return_if_reached(); | 281 g_return_if_reached(); |
282 } | 282 } |
283 | 283 |
284 file_name = msn_object_get_real_location(obj); | 284 img = msn_object_get_image(obj); |
285 | 285 if (img == NULL) |
286 if (file_name == NULL) | |
287 { | 286 { |
288 purple_debug_error("msn", "Wrong object.\n"); | 287 purple_debug_error("msn", "Wrong object.\n"); |
289 msn_object_destroy(obj); | 288 msn_object_destroy(obj); |
290 g_return_if_reached(); | 289 g_return_if_reached(); |
291 } | 290 } |
312 slpmsg->slpsession = slpsession; | 311 slpmsg->slpsession = slpsession; |
313 slpmsg->flags = 0x20; | 312 slpmsg->flags = 0x20; |
314 #ifdef MSN_DEBUG_SLP | 313 #ifdef MSN_DEBUG_SLP |
315 slpmsg->info = "SLP DATA"; | 314 slpmsg->info = "SLP DATA"; |
316 #endif | 315 #endif |
317 msn_slpmsg_open_file(slpmsg, file_name); | 316 msn_slpmsg_set_image(slpmsg, img); |
318 msn_slplink_queue_slpmsg(slplink, slpmsg); | 317 msn_slplink_queue_slpmsg(slplink, slpmsg); |
319 } | 318 } |
320 else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683")) | 319 else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683")) |
321 { | 320 { |
322 /* File Transfer */ | 321 /* File Transfer */ |
1073 end_user_display, obj); | 1072 end_user_display, obj); |
1074 } | 1073 } |
1075 else | 1074 else |
1076 { | 1075 { |
1077 MsnObject *my_obj = NULL; | 1076 MsnObject *my_obj = NULL; |
1078 gchar *data = NULL; | 1077 gconstpointer data = NULL; |
1079 gsize len = 0; | 1078 size_t len = 0; |
1080 | 1079 |
1081 #ifdef MSN_DEBUG_UD | 1080 #ifdef MSN_DEBUG_UD |
1082 purple_debug_info("msn", "Requesting our own user display\n"); | 1081 purple_debug_info("msn", "Requesting our own user display\n"); |
1083 #endif | 1082 #endif |
1084 | 1083 |
1085 my_obj = msn_user_get_object(session->user); | 1084 my_obj = msn_user_get_object(session->user); |
1086 | 1085 |
1087 if (my_obj != NULL) | 1086 if (my_obj != NULL) |
1088 { | 1087 { |
1089 const char *filename = msn_object_get_real_location(my_obj); | 1088 PurpleStoredImage *img = msn_object_get_image(my_obj); |
1090 | 1089 data = purple_imgstore_get_data(img); |
1091 if (filename != NULL) | 1090 len = purple_imgstore_get_size(img); |
1092 g_file_get_contents(filename, &data, &len, NULL); | 1091 } |
1093 } | 1092 |
1094 | 1093 purple_buddy_icons_set_for_user(account, user->passport, data, len, info); |
1095 purple_buddy_icons_set_for_user(account, user->passport, (void *)data, len, info); | |
1096 g_free(data); | |
1097 | 1094 |
1098 /* Free one window slot */ | 1095 /* Free one window slot */ |
1099 session->userlist->buddy_icon_window++; | 1096 session->userlist->buddy_icon_window++; |
1100 | 1097 |
1101 #ifdef MSN_DEBUG_UD | 1098 #ifdef MSN_DEBUG_UD |