pidgin: 53dd1003: only need to loop over active accounts o...
khc at pidgin.im
khc at pidgin.im
Tue Oct 27 04:01:18 EDT 2009
-----------------------------------------------------------------
Revision: 53dd1003ec6cbd5ede404f53721feaf5e7246870
Ancestor: 4d1209864318042ae3115b3a9bcba581b5003ddf
Author: khc at pidgin.im
Date: 2009-10-26T01:11:53
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/53dd1003ec6cbd5ede404f53721feaf5e7246870
Modified files:
pidgin/gtkstatusbox.c
ChangeLog:
only need to loop over active accounts once for this
-------------- next part --------------
============================================================
--- pidgin/gtkstatusbox.c f2739235f99018bd14fb15166f364c2c937756ef
+++ pidgin/gtkstatusbox.c e7dbc2857f3e967646f64d3bb48af6bb4d388ad3
@@ -996,50 +996,50 @@ static PurpleAccount* check_active_accou
* statuses and a token account if they do */
static PurpleAccount* check_active_accounts_for_identical_statuses(void)
{
- PurpleAccount *acct = NULL, *acct2;
- GList *tmp, *tmp2, *active_accts = purple_accounts_get_all_active();
- GList *s, *s1, *s2;
+ GList *iter, *active_accts = purple_accounts_get_all_active();
+ PurpleAccount *acct1 = NULL;
+ const char *prpl1 = NULL;
- for (tmp = active_accts; tmp; tmp = tmp->next) {
- acct = tmp->data;
- s = purple_account_get_status_types(acct);
- for (tmp2 = tmp->next; tmp2; tmp2 = tmp2->next) {
- acct2 = tmp2->data;
+ if (active_accts) {
+ acct1 = active_accts->data;
+ prpl1 = purple_account_get_protocol_id(acct1);
+ } else {
+ /* there's no enabled account */
+ return NULL;
+ }
- /* Only actually look at the statuses if the accounts use the same prpl */
- if (strcmp(purple_account_get_protocol_id(acct), purple_account_get_protocol_id(acct2))) {
- acct = NULL;
- break;
- }
+ /* start at the second account */
+ for (iter = active_accts->next; iter; iter = iter->next) {
+ PurpleAccount *acct2 = iter->data;
+ GList *s1, *s2;
- s2 = purple_account_get_status_types(acct2);
+ if (!g_str_equal(prpl1, purple_account_get_protocol_id(acct2))) {
+ acct1 = NULL;
+ break;
+ }
- s1 = s;
- while (s1 && s2) {
- PurpleStatusType *st1 = s1->data, *st2 = s2->data;
- /* TODO: Are these enough to consider the statuses identical? */
- if (purple_status_type_get_primitive(st1) != purple_status_type_get_primitive(st2)
- || strcmp(purple_status_type_get_id(st1), purple_status_type_get_id(st2))
- || strcmp(purple_status_type_get_name(st1), purple_status_type_get_name(st2))) {
- acct = NULL;
- break;
- }
-
- s1 = s1->next;
- s2 = s2->next;
- }
-
- if (s1 != s2) {/* Will both be NULL if matched */
- acct = NULL;
+ for (s1 = purple_account_get_status_types(acct1),
+ s2 = purple_account_get_status_types(acct2); s1 && s2;
+ s1 = s1->next, s2 = s2->next) {
+ PurpleStatusType *st1 = s1->data, *st2 = s2->data;
+ /* TODO: Are these enough to consider the statuses identical? */
+ if (purple_status_type_get_primitive(st1) != purple_status_type_get_primitive(st2)
+ || strcmp(purple_status_type_get_id(st1), purple_status_type_get_id(st2))
+ || strcmp(purple_status_type_get_name(st1), purple_status_type_get_name(st2))) {
+ acct1 = NULL;
break;
}
}
- if (!acct)
+
+ if (s1 != s2) {/* Will both be NULL if matched */
+ acct1 = NULL;
break;
+ }
}
+
g_list_free(active_accts);
- return acct;
+ return acct1;
}
static void
More information about the Commits
mailing list