Mercurial > hg
changeset 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 | f1f24ee1edfc |
children | 1bb9002801e5 |
files | mcabber/mcabber/hooks.c mcabber/mcabber/screen.c mcabber/mcabber/xmpp_muc.c |
diffstat | 3 files changed, 18 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/mcabber/hooks.c Sat Sep 24 12:30:01 2016 +0200 +++ b/mcabber/mcabber/hooks.c Sat Sep 24 12:31:13 2016 +0200 @@ -568,7 +568,7 @@ roster_setstatus(bjid, rn, prio, status, status_msg, timestamp, role_none, affil_none, NULL); buddylist_build(); - scr_draw_roster(); + update_roster = TRUE; hlog_write_status(bjid, timestamp, status, status_msg); #ifdef MODULES_ENABLE
--- a/mcabber/mcabber/screen.c Sat Sep 24 12:30:01 2016 +0200 +++ b/mcabber/mcabber/screen.c Sat Sep 24 12:31:13 2016 +0200 @@ -2158,7 +2158,6 @@ unsigned short ismsg, isgrp, ismuc, ishid, isspe; guint isurg; gchar *rline_locale; - GSList *resources, *p_res; bflags = buddy_getflags(BUDDATA(buddy)); btype = buddy_gettype(BUDDATA(buddy)); @@ -2178,17 +2177,22 @@ status = '?'; pending = ' '; - resources = buddy_getresources(BUDDATA(buddy)); - for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { - guint events = buddy_resource_getevents(BUDDATA(buddy), - p_res ? p_res->data : ""); - if ((events & ROSTER_EVENT_PAUSED) && pending != '+') - pending = '.'; - if (events & ROSTER_EVENT_COMPOSING) - pending = '+'; - g_free(p_res->data); + if (!ismuc) { + // There is currently no chat state support for MUC + GSList *resources = buddy_getresources(BUDDATA(buddy)); + GSList *p_res; + + for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { + guint events = buddy_resource_getevents(BUDDATA(buddy), + p_res ? p_res->data : ""); + if ((events & ROSTER_EVENT_PAUSED) && pending != '+') + pending = '.'; + if (events & ROSTER_EVENT_COMPOSING) + pending = '+'; + g_free(p_res->data); + } + g_slist_free(resources); } - g_slist_free(resources); // Display message notice if there is a message flag, but not // for unfolded groups.
--- a/mcabber/mcabber/xmpp_muc.c Sat Sep 24 12:30:01 2016 +0200 +++ b/mcabber/mcabber/xmpp_muc.c Sat Sep 24 12:31:13 2016 +0200 @@ -494,7 +494,7 @@ scr_WriteIncomingMessage(roomjid, msg, 0, HBB_PREFIX_INFO, 0); // Send back an unavailable packet xmpp_setstatus(offline, roomjid, "", TRUE); - scr_draw_roster(); + update_roster = TRUE; return; } @@ -748,7 +748,7 @@ cmd_room_whois(room_elt->data, rname, FALSE); } - scr_draw_roster(); + update_roster = TRUE; } void roompresence(gpointer room, void *presencedata)