The most popular way of having your addon blamed for blocking talents currently is the use of static popups. This is (apparently/hopefully) fixed in patch 5.2
There's also a second way this can happen which is largely unknown as it only affects a select group of users, those who have separate chat tabs set up for various chat events, e.g. Whispers.
Due to Blizzard's use of UIFrameFlash on chat tabs that receive new messages, any addon that was in the execution path (e.g. chat mods, chat filters) will then be blamed for talent taint.
This chat code has been the same for donkeys years, however it is only now an issue as Blizzard decided to slap a UIFrameFlash onto the talent frame, rather than use their awesome animation system that's been in the game for a few years.
I don't envision Blizzard fixing this any time soon (ideally they'd remove UIFrameFlash and use animations instead), at least not in time for patch 5.2 anyway.
Basically what this library does is hook 4 Blizzard chat functions (which from testing, can be safely hooked without any issues or execution blocking) and re-writes said functions to use the animation system. This method has been working swell for me for 2 weeks now and has been working without any issues reported from alpha users of various addons that now have this library embedded.
So, here's some project page copy pasta:
A library to force common FCF (Floating Chat Frame) functions to create and use animations instead of using UIFrameFlash.
Why?
The use of UIFrameFlash can be traced to various addon taint issues, most commonly the blocking of changing talents.
You need this library if:
Your addon hooks the `.AddMessage` functionality of a Chat Frame to modify the output.
Your addon makes use of chat event filters. (ChatFrame_AddMessageEventFilter)
What will this do for my addon?
If your addon does make use of one of the above 2 features, it will prevent your addon being blamed for blocking talent changes.
This is good work - however you may want to consider adjusting your distribution approach.
If I understand correctly, this is a piece of code that fixes a bug in the base UI which can lead to taint when addons use certain well-established API functions. This "library" has no addon interface whatsoever, and simply needs to be loaded once to patch the base UI and globally prevent the problem. Packaging it with addons that happen to use those functions saves users from having to know about the problem, but this is just a convenience - knowledgable users could just as easily download this as a stand-alone "fix" mod. The latter approach restricts the fix to the "select" group of users affected by the problem (ie those using multiple chat tabs). As an addon dev, I find it simpler to direct the small group of affected users to a "fix" mod than to embed a library in every addon that might ever encounter the bug (and then remove it again once Blizzard corrects the problem).
With your permission I'll add this to the list of "Blizzard Bug Fix Addons" that I maintain on several sites. However I recommend you adjust your project description to also make sense for end users - eg clarify which users are affected by the problem, show some example taint errors that it fixes and mention that it can be installed as a stand-alone bug fix.
oscarucb, there is a standalone Addon that even fixes some other talent taint sources: http://www.wowace.com/addons/notaint/
Note: Currently the library is only included in the Alpha version.
Technically it's not a bug with the interface because the user isn't affected unless they install and addon that interfaces with specific chat code. The user can use WoW perfectly fine without said addons installed.
Whilst I respect your opinion about having it be a separate addon, I completely disagree with it. As your list clearly depicts, we're already in a horrendous situation where a user must be navigated to a certain page and told to download xyz addons. Not only is the list stupidly huge instead of being in 1 addon, but the low addon popularity itself speaks volumes.
A few advantages of having it be a library:
A quick an easy way to affects hundreds of thousands of users in a very short space of time (the latest versions of Chatter and Prat now bundle it, I say that's a large quantity of the WoW player base)
No conflicts with other addons trying to do the same thing: Cremor just posted the addon "NoTaint" which used to do a similar thing in a sub-optimal way. By embedding the library instead, there is no conflict of hooks between addons. People can continue to enjoy using that addon which fixes popup-related issues with no conflicts with other addons.
The user doesn't need to be educated about the issue, linked to a page, and convinced to download an addon. Whilst this is fine and dandy for advanced users, most of the WoW player base doesn't fall under this category, and very rarely dabbles in new addons unless recommended by word of mouth - a slow process.
If it is ever fixed, it can be easily "killswitch" killed in the repo, which will ripple across addons as they update. There is no need to educate every single author that the issue is fixed and tell them they should stop directing their users to a random taint fixing addon.
As it stands this is the most successful way of doing this with the least hassle. It's just a matter of if said author cares enough not to have his or her addon blocking a users talent changes to the point they'd flat out fix it for ALL their users by embedding a library, or, continually keep pointing users to install another addon to fix an issue their addon is being blamed for.
Now, to the point about listing this library in your guide. No, I do not agree with it. Whilst I made this library without a load-on-demand flag so that advanced users could install it if they wanted to, I am not interested in having users pushed to install another "fix" addon. Then after that, tell them all to remove the addon whenever the issue is fixed. Having the authors remove it when it's fixed means you're making less people do work, and if the author isn't aware that it's fixed, it won't matter, as the library will be inert.
As far as I'm concerned my work is "done". With the inclusion of this library in high popularity addons, I have single handily solved an issue for many people in a matter of days. It's now up to the individual authors themselves to deem how important having their addons not be blamed for blocking talents is.
I did NOT argue against it being a library. Clearly that's a powerful way to push it out to many users quickly and without their knowledge. My point is that it ALSO works perfectly well as a stand-alone addon, and it wouldn't hurt to mention that on the project description. The project description is currently so cryptic that an end user has no prayer of discovering that fact from the page alone.
There are plenty of advanced users who don't run Chatter or Prat but might still be affected by the issue via other addons, whose authors might not ever learn or care about your library (educating the author community is also a large and slow process). Why not let those users benefit as well?
I see. So in summary, you're asking for a better project description? How about I copy paste what I said in this thread (mainly because I'm not sure how to explain it better than I did here :D). Would that be good? Or something else?
I see. So in summary, you're asking for a better project description? How about I copy paste what I said in this thread (mainly because I'm not sure how to explain it better than I did here :D). Would that be good? Or something else?
That works. I had seen your project before you posted this thread, and I didn't really understand the implications for users until I saw this thread. I didn't understand it could also work equally well as a stand-alone mod until I opened up the code.
That works. I had seen your project before you posted this thread, and I didn't really understand the implications for users until I saw this thread. I didn't understand it could also work equally well as a stand-alone mod until I opened up the code.
Done and done. I also updated BlizzBugsSuck to include it so that current users of the addon can benefit rather than downloading another addon.
Blizz has been trying to fix stuff like this lately. The taint is an unintended side-effect which will be remedied.
I've heard a rumour that Blizzard wants taint logs from AddOns, but I can't find the source if true. If it is true, what level do they want the taint log set (1, 2, 3)?
Considering the long list of increasingly older and older bugs that Blizzard either hasn't fixed, or recently fixed an old bug, I'll believe it when I see it.
On a related, side note, I switched from Prat (now moot, as it has been updated) to Basic Chat Mods to gain this library. I still get lots of Interface Action failed errors or "AddOn X is using BlizzardUICode" blah blah. I take it that even with LibChatAnims, nothing can be done until Blizzard actually fixes their code?
Blizz has been trying to fix stuff like this lately. The taint is an unintended side-effect which will be remedied.
5.2 was supposed to be the "taint fixing patch" according to an internal dev. They fixed 2 taint issues, several still remain.
While ultimately it would be great if authors had some kind of direct line to Blizzard, the truth is we have to jump through hoops just to get noticed. Bugs go unfixed for years, taint issues go unfixed for months.
I'd love this to be fixed for patch 5.2, but there are other taint issues still unresolved. Do you honestly think they will be resolved in the last 2-3 weeks of the patch? The UI code is probably already frozen.
I've heard a rumour that Blizzard wants taint logs from AddOns, but I can't find the source if true. If it is true, what level do they want the taint log set (1, 2, 3)?
I haven't heard that rumour. Someone on IRC that had connections internally told us that Blizz was looking into fixing taint issues for 5.2. But as of last week, "we" got an email response saying that said developer(s) were finished with dealing with taint issues.
On a related, side note, I switched from Prat (now moot, as it has been updated) to Basic Chat Mods to gain this library. I still get lots of Interface Action failed errors or "AddOn X is using BlizzardUICode" blah blah. I take it that even with LibChatAnims, nothing can be done until Blizzard actually fixes their code?
You'll need to provide more information than that unfortunately. e.g. Where are you seeing these messages, from the taint log? Is it set to 2? In this mode, ALL tainting (hooking) is tracked doesn't matter if it's bad or good, which can be misleading to some people.
Half-good news. Blizzard has somewhat listened and the latest 5.2 build moves the talent frame flash away from using UIFrameFlash and onto using an animation. It means chat-related addons and any addons using UIFrameFlash on purpose can no longer be blamed for talent frame taint.
Unfortunately they have not moved the chat functions onto animations which they really need to do to actually solve this issue cropping up again and said addons being blamed for blocking something else. Fingers crossed for future builds.
You'll need to provide more information than that unfortunately. e.g. Where are you seeing these messages, from the taint log??
I have not turned on my taint log in a few months because it was always blaming the wrong AddOns. I was, however, talking about BugSack reports.
[PHP]4x [ADDON_ACTION_BLOCKED] AddOn "Mapster" tried to call the protected function "CompactPartyFrame:unusedFunc()".
!BugGrabber-r189\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
<in C code>
Blizzard_CompactRaidFrameContainer.lua:160: in function "CompactRaidFrameContainer_LayoutFrames"
Blizzard_CompactRaidFrameContainer.lua:130: in function "CompactRaidFrameContainer_TryUpdate"
Blizzard_CompactRaidFrameContainer.lua:62: in function "CompactRaidFrameContainer_OnEvent"
<string>:"*:OnEvent":1: in function <string>:"*:OnEvent":1
Locals:
nil
[/PHP]Yes, I know these don't help, and leave more questions than answers, but I wanted to respond and clarify what I was wishing for, in some way to get Blizzard off the blood trail, as it were.
You could replace "Mapster" with "ACP", "Ace3", or just about any other AddOn I have installed. Always something to do with "CompactRaidFrame...", and every AddOn blamed doesn't impact that frame.
Unfortunately they have not moved the chat functions onto animations which they really need to do to actually solve this issue cropping up again and said addons being blamed for blocking something else. Fingers crossed for future builds.
Unfortunately they did not fix this for 5.2, hopefully the next patch will convert chat tab flashing to animations. Until then, this library will prevent chat addons being blamed for any other taint that happens to crop up (Blizzard uses UIFrameFlash in a LOT of places).
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
There's also a second way this can happen which is largely unknown as it only affects a select group of users, those who have separate chat tabs set up for various chat events, e.g. Whispers.
Due to Blizzard's use of UIFrameFlash on chat tabs that receive new messages, any addon that was in the execution path (e.g. chat mods, chat filters) will then be blamed for talent taint.
This chat code has been the same for donkeys years, however it is only now an issue as Blizzard decided to slap a UIFrameFlash onto the talent frame, rather than use their awesome animation system that's been in the game for a few years.
I don't envision Blizzard fixing this any time soon (ideally they'd remove UIFrameFlash and use animations instead), at least not in time for patch 5.2 anyway.
Basically what this library does is hook 4 Blizzard chat functions (which from testing, can be safely hooked without any issues or execution blocking) and re-writes said functions to use the animation system. This method has been working swell for me for 2 weeks now and has been working without any issues reported from alpha users of various addons that now have this library embedded.
So, here's some project page copy pasta:
Project page:
http://www.wowace.com/addons/libchatanims/
You can embed this like any other library.
If I understand correctly, this is a piece of code that fixes a bug in the base UI which can lead to taint when addons use certain well-established API functions. This "library" has no addon interface whatsoever, and simply needs to be loaded once to patch the base UI and globally prevent the problem. Packaging it with addons that happen to use those functions saves users from having to know about the problem, but this is just a convenience - knowledgable users could just as easily download this as a stand-alone "fix" mod. The latter approach restricts the fix to the "select" group of users affected by the problem (ie those using multiple chat tabs). As an addon dev, I find it simpler to direct the small group of affected users to a "fix" mod than to embed a library in every addon that might ever encounter the bug (and then remove it again once Blizzard corrects the problem).
With your permission I'll add this to the list of "Blizzard Bug Fix Addons" that I maintain on several sites. However I recommend you adjust your project description to also make sense for end users - eg clarify which users are affected by the problem, show some example taint errors that it fixes and mention that it can be installed as a stand-alone bug fix.
Note: Currently the library is only included in the Alpha version.
Whilst I respect your opinion about having it be a separate addon, I completely disagree with it. As your list clearly depicts, we're already in a horrendous situation where a user must be navigated to a certain page and told to download xyz addons. Not only is the list stupidly huge instead of being in 1 addon, but the low addon popularity itself speaks volumes.
A few advantages of having it be a library:
As it stands this is the most successful way of doing this with the least hassle. It's just a matter of if said author cares enough not to have his or her addon blocking a users talent changes to the point they'd flat out fix it for ALL their users by embedding a library, or, continually keep pointing users to install another addon to fix an issue their addon is being blamed for.
Now, to the point about listing this library in your guide. No, I do not agree with it. Whilst I made this library without a load-on-demand flag so that advanced users could install it if they wanted to, I am not interested in having users pushed to install another "fix" addon. Then after that, tell them all to remove the addon whenever the issue is fixed. Having the authors remove it when it's fixed means you're making less people do work, and if the author isn't aware that it's fixed, it won't matter, as the library will be inert.
As far as I'm concerned my work is "done". With the inclusion of this library in high popularity addons, I have single handily solved an issue for many people in a matter of days. It's now up to the individual authors themselves to deem how important having their addons not be blamed for blocking talents is.
There are plenty of advanced users who don't run Chatter or Prat but might still be affected by the issue via other addons, whose authors might not ever learn or care about your library (educating the author community is also a large and slow process). Why not let those users benefit as well?
That works. I had seen your project before you posted this thread, and I didn't really understand the implications for users until I saw this thread. I didn't understand it could also work equally well as a stand-alone mod until I opened up the code.
Done and done. I also updated BlizzBugsSuck to include it so that current users of the addon can benefit rather than downloading another addon.
I've heard a rumour that Blizzard wants taint logs from AddOns, but I can't find the source if true. If it is true, what level do they want the taint log set (1, 2, 3)?
Considering the long list of increasingly older and older bugs that Blizzard either hasn't fixed, or recently fixed an old bug, I'll believe it when I see it.
On a related, side note, I switched from Prat (now moot, as it has been updated) to Basic Chat Mods to gain this library. I still get lots of Interface Action failed errors or "AddOn X is using BlizzardUICode" blah blah. I take it that even with LibChatAnims, nothing can be done until Blizzard actually fixes their code?
5.2 was supposed to be the "taint fixing patch" according to an internal dev. They fixed 2 taint issues, several still remain.
While ultimately it would be great if authors had some kind of direct line to Blizzard, the truth is we have to jump through hoops just to get noticed. Bugs go unfixed for years, taint issues go unfixed for months.
I'd love this to be fixed for patch 5.2, but there are other taint issues still unresolved. Do you honestly think they will be resolved in the last 2-3 weeks of the patch? The UI code is probably already frozen.
I haven't heard that rumour. Someone on IRC that had connections internally told us that Blizz was looking into fixing taint issues for 5.2. But as of last week, "we" got an email response saying that said developer(s) were finished with dealing with taint issues.
You'll need to provide more information than that unfortunately. e.g. Where are you seeing these messages, from the taint log? Is it set to 2? In this mode, ALL tainting (hooking) is tracked doesn't matter if it's bad or good, which can be misleading to some people.
As I said...
:)
Unfortunately they have not moved the chat functions onto animations which they really need to do to actually solve this issue cropping up again and said addons being blamed for blocking something else. Fingers crossed for future builds.
[PHP]4x [ADDON_ACTION_BLOCKED] AddOn "Mapster" tried to call the protected function "CompactPartyFrame:unusedFunc()".
!BugGrabber-r189\BugGrabber.lua:587: in function <!BugGrabber\BugGrabber.lua:587>
<in C code>
Blizzard_CompactRaidFrameContainer.lua:160: in function "CompactRaidFrameContainer_LayoutFrames"
Blizzard_CompactRaidFrameContainer.lua:130: in function "CompactRaidFrameContainer_TryUpdate"
Blizzard_CompactRaidFrameContainer.lua:62: in function "CompactRaidFrameContainer_OnEvent"
<string>:"*:OnEvent":1: in function <string>:"*:OnEvent":1
Locals:
nil
[/PHP]Yes, I know these don't help, and leave more questions than answers, but I wanted to respond and clarify what I was wishing for, in some way to get Blizzard off the blood trail, as it were.
http://www.wowinterface.com/forums/showthread.php?t=44041
Unfortunately they did not fix this for 5.2, hopefully the next patch will convert chat tab flashing to animations. Until then, this library will prevent chat addons being blamed for any other taint that happens to crop up (Blizzard uses UIFrameFlash in a LOT of places).