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 {