From 56e08c6897eb3eaa4d70dbe9d3bff7afc1772d05 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Sat, 10 Jan 2026 01:17:58 -0800 Subject: add limit to download queue This avoids a bunch of downloads being triggered when quickly scrolling through a menu. --- downloader.lua | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'downloader.lua') diff --git a/downloader.lua b/downloader.lua index a8519dd..7881129 100644 --- a/downloader.lua +++ b/downloader.lua @@ -6,11 +6,13 @@ local downloader = {} local mt = {} mt.__index = mt -function downloader.new() - return setmetatable({ - pending = {}, - running = false, - }, mt) +function downloader.new(t) + t = setmetatable(t or {}, mt) + + t.pending = {} + t.running = false + + return t end function mt:exec(url, file, cb) @@ -60,6 +62,11 @@ end -- likely to be used for the current display state function mt:schedule(...) if self.running then + if self.limit and #self.pending >= self.limit then + -- remove oldest + table.remove(self.pending, 1) + end + self.pending[#self.pending+1] = {...} else self:exec(...) -- cgit v1.2.3-70-g09d2