4.3 taint issues and solutions
Is it just me or have others gotten taint issues aswell since 4.3?
I would like to start a thread that gathers issues and possible solutions. The most visual problem I'm having is that sometimes when entering a raid the default Blizzard raidframe will show up. I have not nailed it down yet because it does not happen all the time. Inconsistence is bad. :) Getting the taint: Quote:
|
Just a little note that /console taintLog 1 sets a cvar that persists logins,
so you only need to set it once, then /reloadui whenever you see a taint message popping up. (realize you probably know this already but just putting it here for any that stumble on the thread). |
Quote:
try this script for blizz raid frames LUA Code:
|
Yeah, been getting quite a few from pretty simple things like entering combat. I'll try to find out what's wrong.
|
AftermathUI.func is
lua Code:
lua Code:
The best solution I found so far for secure hiding is: lua Code:
|
Quote:
|
Hi zork. I use rActionBarStyler embedded in my UI:
Code:
12/3 00:17:23.259 Global variable WORLDMAP_WINDOWED_SIZE tainted by FreeUI - Interface\AddOns\FreeUI\scripts\map.lua:3 This is pretty much as soon as I enter combat, since 4.3 only. I know it says WORLDMAP_WINDOWED_SIZE but I never get taint from that unless something else taints it. |
I'm aware of that and ignore it. The buttonstyler hooks a Blizzard function via hooksecurefunc and only by doing so you get that taint. But there is no other secure way of doing so. The show/hide even happens in the hooked Blizzard function. (ActionButton_Update)
That is the reason why everything is working. Blizzard is telling me they block me for calling Show/Hide in combat (which I don't). And because I don't everything works normally...if that makes sense. What I find pretty wierd is that it only happens once. (Not every combat) |
As far as I'm aware, as soon as a certain function or variable has been tainted, the UI doesn't report that taint anymore.
|
you guys... sheesh... that hooksecurefunction stuff does not make what you have put in the function capable of functioning in the secure environment. In other words just because you use hooksecure does not make it secure.
This is a chunk of secure code that runs the GrimUI context menu. It makes it so the context menu(a tray of buttons) can be shown/hidden in combat without taint. Code:
local hotSpot = CreateFrame('Button', nil, UIParent, 'SecureHandlerClickTemplate') here is another example, this is the GrimUI config button. made secure so it could toggle the micro bar and options windows while in combat, note however that even though the options can be opened in combat 90% of them will not function. You pretty much can not move around any secure frame during combat no mater how you code it. Code:
local configButton = CreateFrame('Button', configButton, UIParent, 'SecureHandlerClickTemplate') Code:
--[[----------------------------------------------------------------------------- |
and oh yea... for a lot of stuff involving buttons and frames being repositioned especially if your repositioning bliz frames... you need to disable the bliz position manager or every time your moved frame passes through the position management it will taint.
Code:
UIPARENT_MANAGED_FRAME_POSITIONS['MultiBarBottomLeft'] = nil |
What I find most disturbing is the following. I'm hooking (hooksecurefunc) the Blizzard function "ActionButton_Update" because I'm using that function to check for new actionbuttons to be styled. If the button is already styled I return. All I do is to change some button textures.
The Blizzard function itself does Show/Hide on condition. Now the crazy part is that I get a taint for Showing/Hiding. But I'm not doing that in my code. That is part of the Blizzard function. So by just hooking a Blizzard function that does Show/Hide you get a taint. That wasn't the case with 4.2. I'm pretty sure about that because the functionality is unchanged. But not sure if the Show/Hide inside the Blizzard function is new... That is pretty annoying because you may not hook any Blizzard functions with a Show/Hide/SetPoint anymore without tainting stuff. |
Protected frames make their parent protected as well.
Do you perhaps SetParent secure frames to yours? |
Update. Ok my bad I fixed it. The secure hook is actually working. What I did and what brought errors since 4.3 was preventing specific Show/Hide on hotkey and such. :)
So basically the taint was misleading. Now there is only the damn extraActionBarFrame that needs to be workin. :) DIFF: http://code.google.com/p/rothui/sour.../functions.lua |
I was having taint aswell on 4.3 with raid frame, this is what i use atm for hiding raid frames, no bug/taint report on raid frame since using it:
https://github.com/tukz/Tukui/blob/m...d/kill.lua#L14 note: Kill() function is just one of my own function to UnregisterAllEvents() and Hide() on a specific frame. |
This is what I use to completely kill the raid frame and the manager. Worked in 4.2, still seems to work without taint. Disabling PetFrame_Update is necessary.
Code:
F.dummy = function() end Code:
CompactRaidFrameManager:UnregisterAllEvents() Code:
12/6 22:14:30.154 Execution tainted by FreeUI while reading GameTooltipMoneyFrame1SuffixText - Interface\FrameXML\MoneyFrame.lua:486 MoneyFrame_Update() |
Check the updated rActionButtonStyler aswell. I fixed all the taints. Basically the solution is to remove all dummy functions. Check the DIFF: http://code.google.com/p/rothui/sour...ns.lua&old=788
Your raid function does NOT work. I had this aswell. You grab a taint if raid changes size in combat. The raid may not show up but you get a taint. Using dummy functions to prevent a Blizzard function from being called will net you a taint in combat. You have to work around that by using hooksecurefunc, SetAlpha/SetScale and hide the frame once you are OOC. Currently I'm taint free. Be it actionbars or raid frames. I'm happy now. |
Yes, that was while using the updated button styler too. Might be something on my part then, I'll search on. :p
I never get taint from the raid frames anymore, so it works for me, I think. While we're on the subject - does anyone know how I can -properly- rescale the mini world map (including all its sub frames, POI frame, etc) without overwriting WORLDMAP_WINDOWED_SIZE? I tried but I ended up nearly rewriting the whole Blizzard map code :/ |
Hmmm...Here is a problem I'm having.
In the Looking For Raid people will join and leave a read quite often, even while in combat. This will bring up the default raidframe all the time. This is a problem because there is no way of securely hiding it. Thus when using any other unitframe in raids you have 2 raidframes active at the same time. I just asked myself: What would be if we parent the raidframe to another frame that we create and that we Hide(). Basically: lua Code:
If the raidframe container does not reparent itself in any way there should be no way it ever gets shown because of the hidden state of the parented frame. The question that stands, does this provide any benefit in CPU usage? Aka will the events/functions of the raidframe be disabled if the parent frame is hidden? I guess so. Either that or I have no choice and need to get rid of the RaidFrameManager aswell. |
All times are GMT -6. The time now is 03:27 PM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI