UI hangs when connecting to an IRC bouncer with a lot of channels
I launched Srain and connected to my IRC bouncer where I have joined 130+ channels. Srain UI hung for a minute while it received messages from each of these channels.
How to reproduce
- Get yourself a bouncer and join a lot of channels
- Connect to this bouncer with Srain
Actual result
Srain UI hangs while receiving messages (chat buffers) from all the channels.
Expected result
UI runs on a separate thread so that it doesn't hang when receiving a lot of messages at once.
Notes
This probably requires major changes to the design of the app. I am only opening this for tracking.
I have run sysprof to check what is blocking the UI and it appears to come from the usage of gtk_list_store_set in sui_user_update.
I will see if I can improve performance on this part.
Nice catch, it is a valuable fact.
I think the UI hangs is caused by the following callstacks:
- irc_event_numeric (case SIRC_RFC_RPL_NAMREPLY) >
- srn_chat_user_set_is_joined >
- sui_add_user >
- sui_user_list_add_user >
- sui_user_list_update_user >
- sui_user_update
When the client JOINs a channel, the server sends a SIRC_RFC_RPL_NAMREPLY message to the client, client splits all other clients from message and finally adds them to user list(sui_user_list_add_user). The problem is: User list stat is updated (sui_user_update) every time adding user. The core of this should be to allow multiple users to be added before performing an update.
31.08.2024, 05:49, "Elouan Martinet" @.>: I have run sysprof to check what is blocking the UI and it appears to come from the usage of gtk_list_store_set in sui_user_update.I will see if I can improve performance on this part.—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.> -- Best regards,Shengyu Zhang https://silverrainz.me