Closed zaphon closed 4 years ago
You are absolutely correct, I did not think of the case of multiple rep gains in quick succession. Also did not experience the issue in the little time I played since Legion, because like you said this isn't something that happens a lot in current content.
Your idea of checking if it's even a faction of interest might be enough and should be easy to implements, since a list of these already exists. I'll see if I can put something together and somehow test it.
In the meantime a possible workaround should be to disable the paragon rep bars temporarily.
Next version will include a fix for this issue. See commit 20de2292.
Last night I was clearing AQ40 on one of my fresh 120 alts, and was noticing that every time I cleared a large group of Mobs (think 10 or more mobs), that my game would freeze for a second or two (and the indicator was that I got a TON of reputation gain lines showing up). I had cleared it earlier on a 111 and didn't notice this, so not being one to just "accept" it, I went digging.
After a good amount of trial and error, I finally found the offending AddOn. This one to be exact. Digging through the code, it is indeed monitoring REPUTATION gains (specifically the code that now monitors Paragon Reputations). If you disable the monitoring of Paragon Reputations, the problem goes away. But what is the problem?
The issue is that on every UPDATE_FACTION event that triggers, it calls BWQ:UpdateBlock() which is a massively expensive and slow call. Now imagine this event firing 10+ times in a row all at once, and you have the stuttering / freezing behavior that I was seeing.
Now, how could this be fixed? I just disabled the monitoring of Paragon Reputations, which helped. However, it could be fixed in other ways as well. Such as implementing a TTL, and only updating once every N seconds. Checking if it's even a faction you care about, before you go through the long process of updating all the data you do. I'm sure I could come up with more.
Now realistically, in current content, you don't see reputation gains like this, so probably not an issue for most, but both AQ20 and AQ40 give rep on every trash mob kill, so it's easy to reproduce. Just grab the entire first room, and AOE them down at once and watch what happens.