Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/screen.c @ 2280:f1eebfdd6db7
Improve efficiency with high number of MUC resources
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 24 Sep 2016 12:31:13 +0200 |
parents | f5402d705f67 |
children | 1bb9002801e5 |
comparison
equal
deleted
inserted
replaced
2279:f1f24ee1edfc | 2280:f1eebfdd6db7 |
---|---|
2156 for (i=0; i<maxy && buddy; buddy = g_list_next(buddy)) { | 2156 for (i=0; i<maxy && buddy; buddy = g_list_next(buddy)) { |
2157 unsigned short bflags, btype; | 2157 unsigned short bflags, btype; |
2158 unsigned short ismsg, isgrp, ismuc, ishid, isspe; | 2158 unsigned short ismsg, isgrp, ismuc, ishid, isspe; |
2159 guint isurg; | 2159 guint isurg; |
2160 gchar *rline_locale; | 2160 gchar *rline_locale; |
2161 GSList *resources, *p_res; | |
2162 | 2161 |
2163 bflags = buddy_getflags(BUDDATA(buddy)); | 2162 bflags = buddy_getflags(BUDDATA(buddy)); |
2164 btype = buddy_gettype(BUDDATA(buddy)); | 2163 btype = buddy_gettype(BUDDATA(buddy)); |
2165 | 2164 |
2166 ismsg = bflags & ROSTER_FLAG_MSG; | 2165 ismsg = bflags & ROSTER_FLAG_MSG; |
2176 } | 2175 } |
2177 | 2176 |
2178 status = '?'; | 2177 status = '?'; |
2179 pending = ' '; | 2178 pending = ' '; |
2180 | 2179 |
2181 resources = buddy_getresources(BUDDATA(buddy)); | 2180 if (!ismuc) { |
2182 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { | 2181 // There is currently no chat state support for MUC |
2183 guint events = buddy_resource_getevents(BUDDATA(buddy), | 2182 GSList *resources = buddy_getresources(BUDDATA(buddy)); |
2184 p_res ? p_res->data : ""); | 2183 GSList *p_res; |
2185 if ((events & ROSTER_EVENT_PAUSED) && pending != '+') | 2184 |
2186 pending = '.'; | 2185 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
2187 if (events & ROSTER_EVENT_COMPOSING) | 2186 guint events = buddy_resource_getevents(BUDDATA(buddy), |
2188 pending = '+'; | 2187 p_res ? p_res->data : ""); |
2189 g_free(p_res->data); | 2188 if ((events & ROSTER_EVENT_PAUSED) && pending != '+') |
2190 } | 2189 pending = '.'; |
2191 g_slist_free(resources); | 2190 if (events & ROSTER_EVENT_COMPOSING) |
2191 pending = '+'; | |
2192 g_free(p_res->data); | |
2193 } | |
2194 g_slist_free(resources); | |
2195 } | |
2192 | 2196 |
2193 // Display message notice if there is a message flag, but not | 2197 // Display message notice if there is a message flag, but not |
2194 // for unfolded groups. | 2198 // for unfolded groups. |
2195 if (ismsg && (!isgrp || ishid)) { | 2199 if (ismsg && (!isgrp || ishid)) { |
2196 pending = '#'; | 2200 pending = '#'; |