WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Legion Beta archived threads (https://www.wowinterface.com/forums/forumdisplay.php?f=177)
-   -   ObjectiveTracker-related taint (https://www.wowinterface.com/forums/showthread.php?t=54247)

lightspark 08-20-16 07:11 AM

ObjectiveTracker-related taint
 
Hey!

So I've been messing w/ Blizzard_ObjectiveTracker for quite some time, but recently I discovered a bit weird issue. Here's how it happens.

At first I modify (a.k.a. taint) objective tracker's constant, for example, OBJECTIVE_TRACKER_UPDATE_ALL = 0xFFFFFFFF. I think that taint reaches world map frame, when QuestObjectiveTracker_UpdatePOIs is called from world map's QuestMapFrame_UpdateAll function.

But here's a weird part. It doesn't break either objective tracker, or world map itself, they work fine. However, it affects two frames, WorldMapFrame.UIElementsFrame.BountyBoard and WorldMapFrame.UIElementsFrame.ActionButton. So neither :Hide(), nor :SetPoint(), nor :ClearAllPoints() methods can be called in combat. I just get cold "An action was blocked in combat because of taint" warning.

Tweaking Blizzard_ObjectiveTracker was causing no problems before Legion pre-patch, but right now it's pretty much impossible cuz of described issue.

Was this change intended? TBH, it makes no sense.

Example of warning message.

Code:

8/20 16:49:10.879  An action was blocked in combat because of taint from ls_UI - <unnamed>:Hide()
8/20 16:49:10.879      Interface\FrameXML\WorldMapActionButton.lua:58 <unnamed>:Clear()
8/20 16:49:10.879      Interface\FrameXML\WorldMapActionButton.lua:67 <unnamed>:Refresh()
8/20 16:49:10.879      Interface\FrameXML\WorldMapActionButton.lua:19 <unnamed>:SetMapAreaID()
8/20 16:49:10.879      Interface\FrameXML\WorldMapFrame.lua:390
8/20 16:49:10.879      WorldMapFrame:Hide()
8/20 16:49:10.879      Interface\FrameXML\UIParent.lua:2320 <unnamed>:SetUIPanel()
8/20 16:49:10.879      Interface\FrameXML\UIParent.lua:2347 <unnamed>:MoveUIPanel()
8/20 16:49:10.879      Interface\FrameXML\UIParent.lua:2378 <unnamed>:HideUIPanel()
8/20 16:49:10.879      Interface\FrameXML\UIParent.lua:2052
8/20 16:49:10.879      <unnamed>:SetAttribute()
8/20 16:49:10.879      Interface\FrameXML\UIParent.lua:2846 HideUIPanel()
8/20 16:49:10.879      Interface\FrameXML\UIParent.lua:2812 ToggleFrame()
8/20 16:49:10.879      Interface\FrameXML\WorldMapFrame.lua:219 ToggleWorldMap()


Barjack 08-20-16 10:33 AM

Yes, I also encountered this taint path related to WorldMapFrame.UIElementsFrame.ActionButton. Even just opening the World Map frame from addon code (e.g. with WorldMapFrame:Show() or QuestMapFrame_OpenToQuestDetails) will end up in this code path being tainted and errors happening when the map is hidden again, which is incredibly frustrating. Seems like it's currently impossible to open the quest log or world map (which are now the same thing) in 7.0 without tainting this.

In my case I also want to prevent the UI's new bizarre behavior where some undocumented C function causes the order of your quest log to be shuffled whenever you change the zoomed area in the world map, which is caused by the new SortQuestSortTypes function. As expected, all attempts to prevent this also taint the world map/quest log due to this same code path.

Let's hope Blizzard will fix it in 8.0 or 9.0.

Resike 08-20-16 04:49 PM

Well since toggling the world map is basically a :Show/Hide call thats the root of your taint. And of couse it's spreading by the global variables.


All times are GMT -6. The time now is 02:50 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI