perf: skip TestGameCache wait on clustering-only redraws

- SmoothReset now accepts { skipCacheTest = true } to short-circuit the game cache wait and draw-queue drain
- ClusterRedraw passes the flag so icon-cluster and dense-pin-clustering sliders redraw immediately
- QuestieOptionsAdvanced wires the spawn-pin-dedup-radius slider directly to ClusterRedraw instead of the delayed SmoothReset path
This commit is contained in:
Xurkon
2026-06-07 08:42:40 -05:00
parent 5b576911d7
commit 78aefa4af8
3 changed files with 10 additions and 4 deletions
@@ -374,7 +374,7 @@ function QuestieOptions.tabs.advanced:Initialize()
if QuestieDB and QuestieDB.ClearModeCaches then if QuestieDB and QuestieDB.ClearModeCaches then
QuestieDB:ClearModeCaches() QuestieDB:ClearModeCaches()
end end
QuestieOptionsUtils:Delay(0.05, QuestieQuest.SmoothReset, l10n('Setting spawn pin dedup radius to %s : Redrawing!', value)) QuestieOptions:ClusterRedraw()
end, end,
}, },
learnerCommsIntensity = { learnerCommsIntensity = {
+3 -2
View File
@@ -118,8 +118,9 @@ end
function QuestieOptions:ClusterRedraw() function QuestieOptions:ClusterRedraw()
Questie:Debug(Questie.DEBUG_INFO, "Clustering changed, redrawing!") Questie:Debug(Questie.DEBUG_INFO, "Clustering changed, redrawing!")
--Redraw clusters here -- Cluster-only changes don't depend on quest log state — skip the
QuestieQuest:SmoothReset(); -- TestGameCache wait and draw-queue drain that SmoothReset does.
QuestieQuest:SmoothReset({ skipCacheTest = true })
end end
---@return table ---@return table
+6 -1
View File
@@ -330,7 +330,10 @@ local function _UpdateSpecials(questId)
end end
end end
function QuestieQuest:SmoothReset() ---@param opts? table Options table
---@field opts.skipCacheTest boolean If true, skip the TestGameCache wait and draw-queue drain. Use for clustering-only changes that don't depend on quest log state.
function QuestieQuest:SmoothReset(opts)
opts = opts or {}
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:SmoothReset]") Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieQuest:SmoothReset]")
if QuestieQuest._isResetting then if QuestieQuest._isResetting then
QuestieQuest._resetAgain = true QuestieQuest._resetAgain = true
@@ -344,6 +347,8 @@ function QuestieQuest:SmoothReset()
local stepTable = { local stepTable = {
function() function()
-- Wait until game cache has quest log okay. -- Wait until game cache has quest log okay.
-- Skipped when opts.skipCacheTest is set (clustering-only redraws).
if opts.skipCacheTest then return true end
return QuestLogCache.TestGameCache() return QuestLogCache.TestGameCache()
end, end,
function() function()