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 = '#';