Layouting large amount of rich text is slow
Bug #577888 reported by
SirVer
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
widelands |
Fix Released
|
Medium
|
Unassigned |
Bug Description
The chat window in multiplayer should only remember ~20 messages. Otherwise, there is always a notable lag when opening the window after some playtime when a lot of chatting was going on. This is because the whole textarea needs to be rerendered and relayouted each time.
The original name of this bug was:
Chat window remembers all messages ever
because the problem is most obvious with many chat messages in a game
Related branches
lp://staging/~widelands-dev/widelands/fh1
On hold
for merging
into
lp://staging/widelands
- GunChleoc: Needs Resubmitting
- SirVer: Needs Fixing
-
Diff: 20941 lines (+6147/-5758)228 files modifiedCMakeLists.txt (+1/-0)
campaigns/atl01.wmf/scripting/init.lua (+3/-3)
campaigns/atl01.wmf/scripting/texts.lua (+49/-52)
campaigns/bar01.wmf/scripting/texts.lua (+70/-81)
campaigns/bar02.wmf/scripting/texts.lua (+33/-36)
campaigns/emp01.wmf/scripting/texts.lua (+28/-29)
campaigns/emp02.wmf/scripting/texts.lua (+33/-33)
campaigns/tutorial01_basic_control.wmf/scripting/texts.lua (+124/-206)
campaigns/tutorial02_warfare.wmf/scripting/texts.lua (+49/-77)
campaigns/tutorial03_seafaring.wmf/scripting/texts.lua (+43/-72)
campaigns/tutorial04_economy.wmf/scripting/texts.lua (+110/-181)
cmake/Modules/FindICU.cmake (+315/-0)
cmake/WlFunctions.cmake (+6/-0)
doc/sphinx/source/wlrichtext.rst (+4/-6)
i18n/fonts.lua (+17/-10)
i18n/fonts/FaKacstBook/README (+0/-5)
i18n/fonts/amiri/OFL-FAQ.txt (+369/-0)
i18n/fonts/amiri/OFL.txt (+87/-0)
i18n/fonts/amiri/README.txt (+8/-0)
maps/MP Scenarios/Island Hopping.wmf/scripting/first_island.lua (+4/-4)
maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua (+1/-1)
maps/MP Scenarios/Island Hopping.wmf/scripting/texts.lua (+32/-53)
maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua (+1/-0)
maps/Plateau.wmf/scripting/texts.lua (+10/-14)
scripting/format_scenario.lua (+14/-70)
scripting/formatting.lua (+198/-61)
scripting/win_condition_functions.lua (+1/-0)
scripting/win_conditions/collectors.lua (+9/-18)
scripting/win_conditions/defeat_all.lua (+2/-1)
scripting/win_conditions/endless_game.lua (+2/-1)
scripting/win_conditions/endless_game_fogless.lua (+2/-1)
scripting/win_conditions/territorial_lord.lua (+4/-3)
scripting/win_conditions/territorial_time.lua (+3/-2)
scripting/win_conditions/wood_gnome.lua (+6/-5)
src/base/i18n.cc (+2/-1)
src/base/i18n.h (+1/-0)
src/editor/CMakeLists.txt (+1/-0)
src/editor/tools/editor_info_tool.cc (+130/-112)
src/editor/ui_menus/categorized_item_selection_menu.h (+1/-1)
src/editor/ui_menus/editor_main_menu_load_map.cc (+17/-15)
src/editor/ui_menus/editor_main_menu_map_options.cc (+4/-4)
src/editor/ui_menus/editor_main_menu_random_map.cc (+2/-5)
src/editor/ui_menus/editor_main_menu_save_map.cc (+19/-16)
src/editor/ui_menus/editor_main_menu_save_map_make_directory.cc (+1/-2)
src/editor/ui_menus/editor_player_menu.cc (+5/-3)
src/editor/ui_menus/editor_tool_change_height_options_menu.cc (+4/-6)
src/editor/ui_menus/editor_tool_change_resources_options_menu.cc (+24/-26)
src/editor/ui_menus/editor_tool_noise_height_options_menu.cc (+3/-6)
src/editor/ui_menus/editor_tool_set_terrain_options_menu.h (+0/-1)
src/editor/ui_menus/editor_toolsize_menu.cc (+6/-2)
src/editor/ui_menus/editor_toolsize_menu.h (+1/-1)
src/graphic/CMakeLists.txt (+6/-12)
src/graphic/align.cc (+1/-0)
src/graphic/font.cc (+0/-1)
src/graphic/font.h (+0/-1)
src/graphic/font_handler.cc (+0/-275)
src/graphic/font_handler.h (+0/-76)
src/graphic/font_handler1.cc (+91/-28)
src/graphic/font_handler1.h (+25/-2)
src/graphic/format.cc (+210/-140)
src/graphic/format.h (+62/-54)
src/graphic/graphic.cc (+2/-7)
src/graphic/richtext.cc (+0/-497)
src/graphic/richtext.h (+0/-62)
src/graphic/text/CMakeLists.txt (+4/-0)
src/graphic/text/font_set.cc (+6/-0)
src/graphic/text/font_set.h (+2/-0)
src/graphic/text/layout_info.cc (+257/-0)
src/graphic/text/layout_info.h (+174/-0)
src/graphic/text/rt_parse.cc (+72/-41)
src/graphic/text/rt_parse.h (+8/-10)
src/graphic/text/rt_render.cc (+871/-213)
src/graphic/text/rt_render.h (+18/-1)
src/graphic/text/test/data/b1206712/input01.txt (+1/-1)
src/graphic/text/test/data/br/input00.txt (+0/-13)
src/graphic/text/test/data/br/width (+0/-1)
src/graphic/text/test/data/bullet_point/input00.txt (+8/-8)
src/graphic/text/test/data/div_autowidth_floatleftimg/input00.txt (+2/-2)
src/graphic/text/test/data/div_background_img/input00.txt (+2/-2)
src/graphic/text/test/data/div_fixedwidth_floatbothsides/input00.txt (+4/-4)
src/graphic/text/test/data/div_fixedwidth_floatleft/input00.txt (+2/-2)
src/graphic/text/test/data/div_fixedwidth_floatleftimg/input00.txt (+2/-2)
src/graphic/text/test/data/div_fixedwidth_floatright/input00.txt (+2/-2)
src/graphic/text/test/data/div_margin_bgclr/input00.txt (+4/-4)
src/graphic/text/test/data/div_margin_bgimg/input00.txt (+4/-4)
src/graphic/text/test/data/div_nonfloating_valign/input00.txt (+2/-2)
src/graphic/text/test/data/div_padding/input00.txt (+2/-2)
src/graphic/text/test/data/font_shadow/input00.txt (+1/-1)
src/graphic/text/test/data/hspace_dynamic_img/input00.txt (+3/-5)
src/graphic/text/test/data/hspace_dynamic_text/input00.txt (+3/-5)
src/graphic/text/test/data/table_like/input00.txt (+16/-14)
src/graphic/text_constants.h (+0/-51)
src/graphic/text_parser.cc (+0/-310)
src/graphic/text_parser.h (+0/-157)
src/graphic/wordwrap.cc (+0/-293)
src/graphic/wordwrap.h (+0/-80)
src/io/dedicated_log.cc (+4/-3)
src/logic/building.cc (+20/-16)
src/logic/constructionsite.cc (+2/-2)
src/logic/editor_game_base.cc (+1/-4)
src/logic/expedition_bootstrap.cc (+4/-1)
src/logic/immovable.cc (+6/-4)
src/logic/instances.h (+1/-1)
src/logic/productionsite.cc (+10/-10)
src/logic/ship.cc (+4/-4)
src/logic/worker.cc (+3/-5)
src/map_io/map_buildingdata_packet.cc (+0/-1)
src/network/internet_gaming.cc (+3/-4)
src/network/nethost.cc (+56/-56)
src/scripting/lua_game.cc (+14/-3)
src/scripting/lua_globals.cc (+1/-1)
src/ui_basic/button.cc (+51/-22)
src/ui_basic/button.h (+14/-10)
src/ui_basic/editbox.cc (+41/-27)
src/ui_basic/editbox.h (+1/-2)
src/ui_basic/helpwindow.cc (+31/-56)
src/ui_basic/helpwindow.h (+7/-7)
src/ui_basic/icongrid.cc (+0/-3)
src/ui_basic/icongrid.h (+0/-1)
src/ui_basic/listselect.cc (+119/-71)
src/ui_basic/listselect.h (+22/-11)
src/ui_basic/messagebox.cc (+43/-60)
src/ui_basic/messagebox.h (+2/-1)
src/ui_basic/multilineeditbox.cc (+582/-311)
src/ui_basic/multilineeditbox.h (+25/-12)
src/ui_basic/multilinetextarea.cc (+153/-126)
src/ui_basic/multilinetextarea.h (+35/-43)
src/ui_basic/panel.cc (+10/-16)
src/ui_basic/panel.h (+0/-1)
src/ui_basic/progressbar.cc (+11/-8)
src/ui_basic/progresswindow.cc (+7/-9)
src/ui_basic/scrollbar.cc (+6/-1)
src/ui_basic/scrollbar.h (+2/-0)
src/ui_basic/slider.cc (+11/-10)
src/ui_basic/spinbox.cc (+15/-40)
src/ui_basic/spinbox.h (+3/-4)
src/ui_basic/table.cc (+89/-37)
src/ui_basic/table.h (+25/-8)
src/ui_basic/textarea.cc (+100/-99)
src/ui_basic/textarea.h (+15/-20)
src/ui_basic/window.cc (+1/-1)
src/ui_fsmenu/base.cc (+1/-11)
src/ui_fsmenu/base.h (+1/-10)
src/ui_fsmenu/campaign_select.cc (+28/-35)
src/ui_fsmenu/editor.cc.THIS (+73/-0)
src/ui_fsmenu/fileview.cc (+6/-14)
src/ui_fsmenu/fileview.h (+8/-5)
src/ui_fsmenu/internet_lobby.cc (+15/-22)
src/ui_fsmenu/internet_lobby.h (+1/-3)
src/ui_fsmenu/intro.cc (+2/-3)
src/ui_fsmenu/launch_mpg.cc (+40/-52)
src/ui_fsmenu/launch_mpg.h (+2/-2)
src/ui_fsmenu/launch_spg.cc (+18/-30)
src/ui_fsmenu/load_map_or_game.cc (+2/-2)
src/ui_fsmenu/loadgame.cc (+31/-30)
src/ui_fsmenu/main.cc (+21/-20)
src/ui_fsmenu/mapselect.cc (+19/-20)
src/ui_fsmenu/multiplayer.cc (+5/-7)
src/ui_fsmenu/netsetup_lan.cc (+9/-14)
src/ui_fsmenu/options.cc (+57/-47)
src/ui_fsmenu/options.h (+4/-1)
src/ui_fsmenu/singleplayer.cc (+6/-8)
src/ui_fsmenu/suggested_teams_box.cc (+2/-3)
src/wlapplication.cc (+1/-7)
src/wui/actionconfirm.cc (+5/-5)
src/wui/attack_box.cc (+7/-11)
src/wui/attack_box.h (+1/-3)
src/wui/building_statistics_menu.cc (+22/-29)
src/wui/buildingwindow.cc (+14/-6)
src/wui/chat_msg_layout.cc (+1/-105)
src/wui/chat_msg_layout.h (+0/-3)
src/wui/chatoverlay.cc (+11/-4)
src/wui/encyclopedia_window.cc (+5/-3)
src/wui/fieldaction.cc (+6/-3)
src/wui/game_debug_ui.cc (+6/-6)
src/wui/game_main_menu_save_game.cc (+8/-9)
src/wui/game_message_menu.cc (+14/-14)
src/wui/game_objectives_menu.cc (+9/-5)
src/wui/game_options_menu.cc (+1/-2)
src/wui/game_options_sound_menu.cc (+1/-0)
src/wui/game_summary.cc (+7/-5)
src/wui/game_tips.cc (+1/-1)
src/wui/gamechatpanel.cc (+14/-9)
src/wui/interactive_base.cc (+11/-13)
src/wui/interactive_gamebase.cc (+8/-10)
src/wui/interactive_player.cc (+1/-1)
src/wui/login_box.cc (+13/-11)
src/wui/multiplayersetupgroup.cc (+35/-38)
src/wui/multiplayersetupgroup.h (+1/-4)
src/wui/playerdescrgroup.cc (+0/-2)
src/wui/plot_area.cc (+1/-1)
src/wui/soldiercapacitycontrol.cc (+7/-2)
src/wui/soldierlist.cc (+23/-16)
src/wui/story_message_box.cc (+1/-2)
src/wui/transport_ui.cc (+1/-1)
src/wui/waresdisplay.cc (+12/-14)
tribes/atlanteans/dungeon/help.lua (+1/-1)
tribes/atlanteans/headquarters/help.lua (+1/-1)
tribes/atlanteans/labyrinth/help.lua (+3/-3)
tribes/atlanteans/resi_granite1/conf (+0/-10)
tribes/atlanteans/resi_granite2/conf (+0/-10)
tribes/barbarians/axfactory/help.lua (+1/-1)
tribes/barbarians/battlearena/help.lua (+1/-1)
tribes/barbarians/coalmine/help.lua (+3/-2)
tribes/barbarians/deep_coalmine/help.lua (+3/-2)
tribes/barbarians/deep_goldmine/help.lua (+8/-1)
tribes/barbarians/deeper_coalmine/help.lua (+3/-2)
tribes/barbarians/deeper_goldmine/help.lua (+8/-1)
tribes/barbarians/gamekeepers_hut/help.lua (+4/-2)
tribes/barbarians/goldmine/help.lua (+8/-1)
tribes/barbarians/granitemine/help.lua (+2/-2)
tribes/barbarians/headquarters/help.lua (+1/-1)
tribes/barbarians/headquarters_interim/help.lua (+1/-1)
tribes/barbarians/hunters_hut/help.lua (+10/-1)
tribes/barbarians/trainingcamp/help.lua (+2/-2)
tribes/barbarians/warmill/help.lua (+1/-1)
tribes/barbarians/well/help.lua (+8/-1)
tribes/empire/arena/help.lua (+1/-1)
tribes/empire/colosseum/help.lua (+1/-1)
tribes/empire/headquarters/help.lua (+1/-1)
tribes/empire/headquarters_shipwreck/help.lua (+1/-1)
tribes/empire/trainingcamp/help.lua (+2/-2)
tribes/scripting/format_help.lua (+84/-75)
txts/AUTHORS.lua (+11/-6)
txts/LICENSE.lua (+5/-22)
txts/README.lua (+81/-140)
txts/editor_readme.lua (+14/-33)
utils/test/test_lua-xgettext.py (+2/-2)
Changed in widelands: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
tags: | added: chat multiplayer performance ui |
summary: |
- Chat window remembers all messages ever + Layouting large amount of rich text is slow |
description: | updated |
Changed in widelands: | |
milestone: | build18-rc1 → build19-rc1 |
Changed in widelands: | |
milestone: | build19-rc1 → none |
To post a comment you must log in.
sound useful - BUT:
There should be a function to view the chat history - perhaps steping back in 20 message steps or so.