Mercurial > pidgin
comparison libpurple/protocols/msn/user.c @ 28978:746bf7d8b34e
Combine the CurrentMedia and MsnUserPhoneInfo structs. This makes
MsnUser smaller by the size of one pointer.
Since both of these structs are used only rarely, this ends up saving
memory for most people.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Fri, 05 Feb 2010 02:19:22 +0000 |
parents | 08296b862f98 |
children | 7f97370e674b 1830fa548302 |
comparison
equal
deleted
inserted
replaced
28977:e137c1fc216a | 28978:746bf7d8b34e |
---|---|
65 msn_object_destroy(user->msnobj); | 65 msn_object_destroy(user->msnobj); |
66 | 66 |
67 g_free(user->passport); | 67 g_free(user->passport); |
68 g_free(user->friendly_name); | 68 g_free(user->friendly_name); |
69 g_free(user->uid); | 69 g_free(user->uid); |
70 if (user->phone) { | 70 if (user->extinfo) { |
71 g_free(user->phone->home); | 71 g_free(user->extinfo->media_album); |
72 g_free(user->phone->work); | 72 g_free(user->extinfo->media_artist); |
73 g_free(user->phone->mobile); | 73 g_free(user->extinfo->media_title); |
74 g_free(user->phone); | 74 g_free(user->extinfo->phone_home); |
75 } | 75 g_free(user->extinfo->phone_mobile); |
76 if (user->media) { | 76 g_free(user->extinfo->phone_work); |
77 g_free(user->media->artist); | 77 g_free(user->extinfo); |
78 g_free(user->media->title); | |
79 g_free(user->media->album); | |
80 g_free(user->media); | |
81 } | 78 } |
82 g_free(user->statusline); | 79 g_free(user->statusline); |
83 g_free(user->invite_message); | 80 g_free(user->invite_message); |
84 | 81 |
85 g_free(user); | 82 g_free(user); |
111 | 108 |
112 if (!offline || !user->mobile) { | 109 if (!offline || !user->mobile) { |
113 purple_prpl_got_user_status_deactive(account, user->passport, "mobile"); | 110 purple_prpl_got_user_status_deactive(account, user->passport, "mobile"); |
114 } | 111 } |
115 | 112 |
116 if (!offline && user->media && user->media->type != CURRENT_MEDIA_UNKNOWN) { | 113 if (!offline && user->extinfo && user->extinfo->media_type != CURRENT_MEDIA_UNKNOWN) { |
117 if (user->media->type == CURRENT_MEDIA_MUSIC) { | 114 if (user->extinfo->media_type == CURRENT_MEDIA_MUSIC) { |
118 purple_prpl_got_user_status(account, user->passport, "tune", | 115 purple_prpl_got_user_status(account, user->passport, "tune", |
119 PURPLE_TUNE_ARTIST, user->media->artist, | 116 PURPLE_TUNE_ARTIST, user->extinfo->media_artist, |
120 PURPLE_TUNE_ALBUM, user->media->album, | 117 PURPLE_TUNE_ALBUM, user->extinfo->media_album, |
121 PURPLE_TUNE_TITLE, user->media->title, | 118 PURPLE_TUNE_TITLE, user->extinfo->media_title, |
122 NULL); | 119 NULL); |
123 } else if (user->media->type == CURRENT_MEDIA_GAMES) { | 120 } else if (user->extinfo->media_type == CURRENT_MEDIA_GAMES) { |
124 purple_prpl_got_user_status(account, user->passport, "tune", | 121 purple_prpl_got_user_status(account, user->passport, "tune", |
125 "game", user->media->title, | 122 "game", user->extinfo->media_title, |
126 NULL); | 123 NULL); |
127 } else if (user->media->type == CURRENT_MEDIA_OFFICE) { | 124 } else if (user->extinfo->media_type == CURRENT_MEDIA_OFFICE) { |
128 purple_prpl_got_user_status(account, user->passport, "tune", | 125 purple_prpl_got_user_status(account, user->passport, "tune", |
129 "office", user->media->title, | 126 "office", user->extinfo->media_title, |
130 NULL); | 127 NULL); |
131 } else { | 128 } else { |
132 purple_debug_warning("msn", "Got CurrentMedia with unknown type %d.\n", | 129 purple_debug_warning("msn", "Got CurrentMedia with unknown type %d.\n", |
133 user->media->type); | 130 user->extinfo->media_type); |
134 } | 131 } |
135 } else { | 132 } else { |
136 purple_prpl_got_user_status_deactive(account, user->passport, "tune"); | 133 purple_prpl_got_user_status_deactive(account, user->passport, "tune"); |
137 } | 134 } |
138 | 135 |
209 g_free(user->statusline); | 206 g_free(user->statusline); |
210 user->statusline = g_strdup(statusline); | 207 user->statusline = g_strdup(statusline); |
211 } | 208 } |
212 | 209 |
213 void | 210 void |
214 msn_user_set_currentmedia(MsnUser *user, CurrentMedia *media) | |
215 { | |
216 if (user->media) { | |
217 g_free(user->media->title); | |
218 g_free(user->media->album); | |
219 g_free(user->media->artist); | |
220 g_free(user->media); | |
221 } | |
222 | |
223 user->media = media; | |
224 } | |
225 | |
226 void | |
227 msn_user_set_uid(MsnUser *user, const char *uid) | 211 msn_user_set_uid(MsnUser *user, const char *uid) |
228 { | 212 { |
229 g_return_if_fail(user != NULL); | 213 g_return_if_fail(user != NULL); |
230 | 214 |
231 g_free(user->uid); | 215 g_free(user->uid); |
368 void | 352 void |
369 msn_user_set_home_phone(MsnUser *user, const char *number) | 353 msn_user_set_home_phone(MsnUser *user, const char *number) |
370 { | 354 { |
371 g_return_if_fail(user != NULL); | 355 g_return_if_fail(user != NULL); |
372 | 356 |
373 if (!number && !user->phone) | 357 if (!number && !user->extinfo) |
374 return; | 358 return; |
375 | 359 |
376 if (user->phone) | 360 if (user->extinfo) |
377 g_free(user->phone->home); | 361 g_free(user->extinfo->phone_home); |
378 else | 362 else |
379 user->phone = g_new0(MsnUserPhoneInfo, 1); | 363 user->extinfo = g_new0(MsnUserExtendedInfo, 1); |
380 | 364 |
381 user->phone->home = g_strdup(number); | 365 user->extinfo->phone_home = g_strdup(number); |
382 } | 366 } |
383 | 367 |
384 void | 368 void |
385 msn_user_set_work_phone(MsnUser *user, const char *number) | 369 msn_user_set_work_phone(MsnUser *user, const char *number) |
386 { | 370 { |
387 g_return_if_fail(user != NULL); | 371 g_return_if_fail(user != NULL); |
388 | 372 |
389 if (!number && !user->phone) | 373 if (!number && !user->extinfo) |
390 return; | 374 return; |
391 | 375 |
392 if (user->phone) | 376 if (user->extinfo) |
393 g_free(user->phone->work); | 377 g_free(user->extinfo->phone_work); |
394 else | 378 else |
395 user->phone = g_new0(MsnUserPhoneInfo, 1); | 379 user->extinfo = g_new0(MsnUserExtendedInfo, 1); |
396 | 380 |
397 user->phone->work = g_strdup(number); | 381 user->extinfo->phone_work = g_strdup(number); |
398 } | 382 } |
399 | 383 |
400 void | 384 void |
401 msn_user_set_mobile_phone(MsnUser *user, const char *number) | 385 msn_user_set_mobile_phone(MsnUser *user, const char *number) |
402 { | 386 { |
403 g_return_if_fail(user != NULL); | 387 g_return_if_fail(user != NULL); |
404 | 388 |
405 if (!number && !user->phone) | 389 if (!number && !user->extinfo) |
406 return; | 390 return; |
407 | 391 |
408 if (user->phone) | 392 if (user->extinfo) |
409 g_free(user->phone->mobile); | 393 g_free(user->extinfo->phone_mobile); |
410 else | 394 else |
411 user->phone = g_new0(MsnUserPhoneInfo, 1); | 395 user->extinfo = g_new0(MsnUserExtendedInfo, 1); |
412 | 396 |
413 user->phone->mobile = g_strdup(number); | 397 user->extinfo->phone_mobile = g_strdup(number); |
414 } | 398 } |
415 | 399 |
416 void | 400 void |
417 msn_user_set_clientid(MsnUser *user, guint clientid) | 401 msn_user_set_clientid(MsnUser *user, guint clientid) |
418 { | 402 { |
483 const char * | 467 const char * |
484 msn_user_get_home_phone(const MsnUser *user) | 468 msn_user_get_home_phone(const MsnUser *user) |
485 { | 469 { |
486 g_return_val_if_fail(user != NULL, NULL); | 470 g_return_val_if_fail(user != NULL, NULL); |
487 | 471 |
488 return user->phone ? user->phone->home : NULL; | 472 return user->extinfo ? user->extinfo->phone_home : NULL; |
489 } | 473 } |
490 | 474 |
491 const char * | 475 const char * |
492 msn_user_get_work_phone(const MsnUser *user) | 476 msn_user_get_work_phone(const MsnUser *user) |
493 { | 477 { |
494 g_return_val_if_fail(user != NULL, NULL); | 478 g_return_val_if_fail(user != NULL, NULL); |
495 | 479 |
496 return user->phone ? user->phone->work : NULL; | 480 return user->extinfo ? user->extinfo->phone_work : NULL; |
497 } | 481 } |
498 | 482 |
499 const char * | 483 const char * |
500 msn_user_get_mobile_phone(const MsnUser *user) | 484 msn_user_get_mobile_phone(const MsnUser *user) |
501 { | 485 { |
502 g_return_val_if_fail(user != NULL, NULL); | 486 g_return_val_if_fail(user != NULL, NULL); |
503 | 487 |
504 return user->phone ? user->phone->mobile : NULL; | 488 return user->extinfo ? user->extinfo->phone_mobile : NULL; |
505 } | 489 } |
506 | 490 |
507 guint | 491 guint |
508 msn_user_get_clientid(const MsnUser *user) | 492 msn_user_get_clientid(const MsnUser *user) |
509 { | 493 { |