summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzachir <zachir@librem.one>2023-11-05 17:13:59 -0600
committerzachir <zachir@librem.one>2023-11-05 17:13:59 -0600
commit6ca46530b2c59d21ec83cb86a2dfc07f1e00f073 (patch)
treea5a8e85acf3b4564ac4c2d76fe5404cd282b855a
parent1b4e212fb60e54b2fdbf0d4584af68b7959cc24c (diff)
Add reset_garbage_collector to sorta fix mem leaks
I added in a variable to force clearing the garbage collector more often, so that the memory leaks involving awful.spawn.easy_async wouldn't cause massive performance issues over time.
-rw-r--r--cpu-widget/cpu-widget.lua12
-rw-r--r--mpdarc-widget/mpdarc.lua12
-rw-r--r--ram-widget/ram-widget.lua7
-rw-r--r--volume-widget/volume.lua7
4 files changed, 38 insertions, 0 deletions
diff --git a/cpu-widget/cpu-widget.lua b/cpu-widget/cpu-widget.lua
index 23b61f6..f1056e9 100644
--- a/cpu-widget/cpu-widget.lua
+++ b/cpu-widget/cpu-widget.lua
@@ -163,6 +163,7 @@ local function worker(user_args)
-- This part runs constantly, also when the popup is closed.
-- It updates the graph widget in the bar.
local maincpu = {}
+ local reset_garbage_collector = 0
watch(CMD_slim, timeout, function(widget, stdout)
local _, user, nice, system, idle, iowait, irq, softirq, steal, _, _ =
@@ -178,12 +179,18 @@ local function worker(user_args)
maincpu['idle_prev'] = idle
widget:add_value(diff_usage)
+ reset_garbage_collector = reset_garbage_collector + 1
+ if (reset_garbage_collector > 5) then
+ collectgarbage()
+ reset_garbage_collector = 0
+ end
end,
cpugraph_widget
)
-- This part runs whenever the timer is fired.
-- It therefore only runs when the popup is open.
+ local reset_garbage_collector = 0
local cpus = {}
popup_timer:connect_signal('timeout', function()
awful.spawn.easy_async(CMD, function(stdout, _, _, _)
@@ -318,6 +325,11 @@ local function worker(user_args)
margins = 8,
widget = wibox.container.margin
}
+ reset_garbage_collector = reset_garbage_collector + 1
+ if (reset_garbage_collector > 10) then
+ collectgarbage()
+ reset_garbage_collector = 0
+ end
end)
end)
diff --git a/mpdarc-widget/mpdarc.lua b/mpdarc-widget/mpdarc.lua
index a6a8e75..609efbf 100644
--- a/mpdarc-widget/mpdarc.lua
+++ b/mpdarc-widget/mpdarc.lua
@@ -87,13 +87,20 @@ mpdarc:connect_signal("button::press", function(_, _, _, button)
elseif (button == 5) then awful.spawn(PREV_MPD_CMD, false) -- scroll down
end
+ local reset_garbage_collector = 0
spawn.easy_async(GET_MPD_CMD, function(stdout, stderr, exitreason, exitcode)
update_graphic(mpdarc, stdout, stderr, exitreason, exitcode)
+ reset_garbage_collector = reset_garbage_collector + 1
+ if (reset_garbage_collector > 10) then
+ collectgarbage()
+ reset_garbage_collector = 0
+ end
end)
end)
local notification
local function show_MPD_status()
+ local reset_garbage_collector
spawn.easy_async(GET_MPD_CMD,
function(stdout, _, _, _)
notification = naughty.notify {
@@ -103,6 +110,11 @@ local function show_MPD_status()
hover_timeout = 0.5,
width = 600,
}
+ reset_garbage_collector = reset_garbage_collector + 1
+ if (reset_garbage_collector > 10) then
+ collectgarbage()
+ reset_garbage_collector = 0
+ end
end)
end
diff --git a/ram-widget/ram-widget.lua b/ram-widget/ram-widget.lua
index 867d28e..970c2d6 100644
--- a/ram-widget/ram-widget.lua
+++ b/ram-widget/ram-widget.lua
@@ -59,6 +59,8 @@ local function worker(user_args)
return math.floor(value / (total+total_swap) * 100 + 0.5) .. '%'
end
+ local reset_garbage_collector = 0
+
watch('bash -c "LANGUAGE=en_US.UTF-8 free | grep -z Mem.*Swap.*"', timeout,
function(widget, stdout)
total, used, free, shared, buff_cache, available, total_swap, used_swap, free_swap =
@@ -77,6 +79,11 @@ local function worker(user_args)
{'buff_cache ' .. getPercentage(buff_cache), buff_cache}
}
end
+ reset_garbage_collector = reset_garbage_collector + 1
+ if (reset_garbage_collector > 9) then
+ collectgarbage()
+ reset_garbage_collector = 0
+ end
end,
ramgraph_widget
)
diff --git a/volume-widget/volume.lua b/volume-widget/volume.lua
index 4c44042..b689f6e 100644
--- a/volume-widget/volume.lua
+++ b/volume-widget/volume.lua
@@ -143,7 +143,9 @@ local function build_header_row(text)
end
local function rebuild_popup()
+ local reset_garbage_collector = 0
spawn.easy_async(LIST_DEVICES_CMD, function(stdout)
+ reset_garbage_collector = reset_garbage_collector + 1
local sinks, sources = utils.extract_sinks_and_sources(stdout)
@@ -155,6 +157,11 @@ local function rebuild_popup()
table.insert(rows, build_rows(sources, function() rebuild_popup() end, "source"))
popup:setup(rows)
+
+ if (reset_garbage_collector > 10) then
+ collectgarbage()
+ reset_garbage_collector = 0
+ end
end)
end