Caching worker data instead of formatted values.
For each of the wtype formatted data was being cached instead of the data returned from the worker. This fix caches the returned values.
This commit is contained in:
parent
1f6359e306
commit
13a28d5485
23
init.lua
23
init.lua
|
@ -61,16 +61,20 @@ local function update(widget, reg, disablecache)
|
||||||
return ret or data
|
return ret or data
|
||||||
end
|
end
|
||||||
|
|
||||||
local function update_value(data, t, cache)
|
local function update_value(data)
|
||||||
|
local fmtd_data = format_data(data)
|
||||||
if widget.add_value ~= nil then
|
if widget.add_value ~= nil then
|
||||||
widget:add_value(tonumber(data) and tonumber(data)/100)
|
widget:add_value(tonumber(fmtd_data) and tonumber(fmtd_data)/100)
|
||||||
elseif widget.set_value ~= nil then
|
elseif widget.set_value ~= nil then
|
||||||
widget:set_value(tonumber(data) and tonumber(data)/100)
|
widget:set_value(tonumber(fmtd_data) and tonumber(fmtd_data)/100)
|
||||||
elseif widget.set_markup ~= nil then
|
elseif widget.set_markup ~= nil then
|
||||||
widget:set_markup(data)
|
widget:set_markup(fmtd_data)
|
||||||
else
|
else
|
||||||
widget.text = data
|
widget.text = fmtd_data
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function update_cache(data, t, cache)
|
||||||
-- Update cache
|
-- Update cache
|
||||||
if t and cache then
|
if t and cache then
|
||||||
cache.time, cache.data = t, data
|
cache.time, cache.data = t, data
|
||||||
|
@ -79,8 +83,8 @@ local function update(widget, reg, disablecache)
|
||||||
|
|
||||||
-- Check for cached output newer than the last update
|
-- Check for cached output newer than the last update
|
||||||
local c = widget_cache[reg.wtype]
|
local c = widget_cache[reg.wtype]
|
||||||
return update_value(format_data(c.data))
|
|
||||||
if c and t < c.time + reg.timer and not disablecache then
|
if c and t < c.time + reg.timer and not disablecache then
|
||||||
|
update_value(c.data)
|
||||||
elseif reg.wtype then
|
elseif reg.wtype then
|
||||||
if type(reg.wtype) == "table" and reg.wtype.async then
|
if type(reg.wtype) == "table" and reg.wtype.async then
|
||||||
if not reg.lock then
|
if not reg.lock then
|
||||||
|
@ -88,12 +92,15 @@ local function update(widget, reg, disablecache)
|
||||||
return reg.wtype.async(reg.format,
|
return reg.wtype.async(reg.format,
|
||||||
reg.warg,
|
reg.warg,
|
||||||
function(data)
|
function(data)
|
||||||
update_value(format_data(data), t, c)
|
update_cache(data, t, c)
|
||||||
|
update_value(data)
|
||||||
reg.lock=false
|
reg.lock=false
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
return update_value(format_data(reg.wtype(reg.format, reg.warg)), t, c)
|
local data = reg.wtype(reg.format, reg.warg)
|
||||||
|
update_cache(data, t, c)
|
||||||
|
update_value(data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue