mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Replace WDB tooltip warmup with GET_ITEM_INFO_RECEIVED handler
ClassicAPI hooks the global GetItemInfo to auto-warm the item cache on a miss and fires GET_ITEM_INFO_RECEIVED when the async fill lands, so the tooltip-scan warmup is obsolete: IndexItems's own GetItemInfo calls already trigger the same warmup, and owned items (bags + equipped) are priority-prefetched by the engine. The old warmup also assumed the fill was synchronous, which no longer holds. Drop DoWDBWarmup and its login scheduling; instead listen for GET_ITEM_INFO_RECEIVED and run a debounced re-index. IndexItems records owned itemIDs it could not resolve into pendingItemInfo, and the handler ignores any fill not in that set (quest DB scans, AH sweeps, chat-link hovers, inspects) in O(1) so unrelated bursts do not cause reindex churn.
This commit is contained in:
@@ -238,6 +238,14 @@ function CleveRoids.IndexItems()
|
||||
local items = {}
|
||||
local NUM_BAG_SLOTS = NUM_BAG_SLOTS -- Upvalue for bag constant
|
||||
|
||||
-- Rebuilt each pass: itemIDs the player owns that GetItemInfo couldn't
|
||||
-- resolve yet (cold cache under ClassicAPI's async warmup). The
|
||||
-- GET_ITEM_INFO_RECEIVED handler consults this so it only re-indexes for
|
||||
-- our own uncached items and ignores the flood of unrelated fills (quest
|
||||
-- DB scans, AH, chat-link hovers, inspects) in O(1).
|
||||
local pendingItemInfo = {}
|
||||
CleveRoids.pendingItemInfo = pendingItemInfo
|
||||
|
||||
-- PERFORMANCE: Local function references
|
||||
local GetContainerNumSlots = GetContainerNumSlots
|
||||
local GetContainerItemInfo = GetContainerItemInfo
|
||||
@@ -281,6 +289,9 @@ function CleveRoids.IndexItems()
|
||||
if lowerName ~= name then
|
||||
items[lowerName] = name
|
||||
end
|
||||
else
|
||||
-- Owned but not cached yet; wait for GET_ITEM_INFO_RECEIVED.
|
||||
pendingItemInfo[itemID] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -318,6 +329,9 @@ function CleveRoids.IndexItems()
|
||||
if lowerName ~= name then
|
||||
items[lowerName] = name
|
||||
end
|
||||
else
|
||||
-- Owned but not cached yet; wait for GET_ITEM_INFO_RECEIVED.
|
||||
pendingItemInfo[itemID] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user