diff options
| author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2026-01-10 01:17:58 -0800 |
|---|---|---|
| committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2026-01-10 01:17:58 -0800 |
| commit | 56e08c6897eb3eaa4d70dbe9d3bff7afc1772d05 (patch) | |
| tree | ce9d8e876277ef99d7668341460d43a83afdca5e /downloader.lua | |
| parent | 5f6b4c254798d14c5f148e4ea4404007d1aa7f3a (diff) | |
| download | mpv-iptv-menu-56e08c6897eb3eaa4d70dbe9d3bff7afc1772d05.tar.gz mpv-iptv-menu-56e08c6897eb3eaa4d70dbe9d3bff7afc1772d05.tar.xz | |
add limit to download queue
This avoids a bunch of downloads being triggered when quickly scrolling
through a menu.
Diffstat (limited to 'downloader.lua')
| -rw-r--r-- | downloader.lua | 17 |
1 files changed, 12 insertions, 5 deletions
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(...) |
