5e453fc - Optimize CheckIndicators
[wowui.git] / OmaRF / Indicators.lua
index 6fd7b23..d37383a 100644 (file)
@@ -13,7 +13,6 @@ local watchedAuras = {};
 
 local updaters = {};
 local updating = {};
 
 local updaters = {};
 local updating = {};
-local auraFilters = {"HELPFUL", "HARMFUL"};
 
 local M = {};
 OmaRFIndicators = M;
 
 local M = {};
 OmaRFIndicators = M;
@@ -87,7 +86,7 @@ local function updateIndicators(frame)
         end
     end
     if needUpdate then
         end
     end
     if needUpdate then
-        CTimerAfter(0.16, updaters[frame]);
+        CTimerAfter(0.20, updaters[frame]);
     else
         updating[frame] = nil;
     end
     else
         updating[frame] = nil;
     end
@@ -132,26 +131,28 @@ function M.CheckIndicators(frame, unit)
     local majorPos = 1;
     local alert = false; -- color the whole bar
     local current = GetTime();
     local majorPos = 1;
     local alert = false; -- color the whole bar
     local current = GetTime();
-    for _, filter in ipairs(auraFilters) do
-        local i = 1;
-        while true do
-            name, _, icon, count, _, _, expires, caster, _, _, id = UnitAura(unit, i, filter);
-            if not id then break end
-            local pos = watchedAuras[id] or watchedAuras[name];
-            if pos and caster == "player" then
-                needUpdate = showInd(frame.inds[pos], expires, current, count, icon) or needUpdate;
-                showInds = true;
-            end
-            local major = majorAuras[id] or majorAuras[name];
-            if major and majorPos <= 3 then
-                needUpdate = showInd(frame.majors[majorPos], expires, current, count, icon) or needUpdate;
-                if major.bar then alert = true end
-                showMajors = true;
-                majorPos = majorPos + 1;
-            end
-            i = i + 1;
+    for spell, pos in pairs(watchedAuras) do
+        name, _, icon, count, _, _, expires = UnitAura(unit, spell, nil, "PLAYER HELPFUL");
+        if name then
+            needUpdate = showInd(frame.inds[pos], expires, current, count, icon) or needUpdate;
+            showInds = true;
+        end
+    end
+
+    local i = 1;
+    while true do
+        name, _, icon, count, _, _, expires, caster, _, _, id = UnitAura(unit, i, "HARMFUL");
+        if not id or majorPos > 3 then break end
+        local major = majorAuras[id] or majorAuras[name];
+        if major then
+            needUpdate = showInd(frame.majors[majorPos], expires, current, count, icon) or needUpdate;
+            if major.bar then alert = true end
+            showMajors = true;
+            majorPos = majorPos + 1;
         end
         end
+        i = i + 1;
     end
     end
+
     if showInds or showMajors then
         frame.indBase:Show();
         frame.majorBase:Show();
     if showInds or showMajors then
         frame.indBase:Show();
         frame.majorBase:Show();
@@ -163,7 +164,7 @@ function M.CheckIndicators(frame, unit)
                 func = function() updateIndicators(frame) end;
                 updaters[frame] = func;
             end
                 func = function() updateIndicators(frame) end;
                 updaters[frame] = func;
             end
-            CTimerAfter(0.16, func);
+            CTimerAfter(0.20, func);
         end
     else
         frame.indBase:Hide();
         end
     else
         frame.indBase:Hide();