handle case if pacmd fails

Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Signed-off-by: Adrian C. (anrxc) <anrxc@sysphere.org>
This commit is contained in:
Noah Tilton 2015-02-22 11:19:34 +01:00 committed by Adrian C. (anrxc)
parent 9c535a19bd
commit 02e1142749
1 changed files with 9 additions and 3 deletions

View File

@ -30,9 +30,13 @@ local pulse = {}
-- {{{ Helper function -- {{{ Helper function
local function pacmd(args) local function pacmd(args)
local f = io.popen("pacmd "..args) local f = io.popen("pacmd "..args)
local line = f:read("*all") if f == nil then
f:close() return nil
return line else
local line = f:read("*all")
f:close()
return line
end
end end
local function escape(text) local function escape(text)
@ -48,6 +52,7 @@ local function get_sink_name(sink)
-- Cache requests -- Cache requests
if not cached_sinks[key] then if not cached_sinks[key] then
local line = pacmd("list-sinks") local line = pacmd("list-sinks")
if line == nil then return nil end
for s in string.gmatch(line, "name: <(.-)>") do for s in string.gmatch(line, "name: <(.-)>") do
table.insert(cached_sinks, s) table.insert(cached_sinks, s)
end end
@ -66,6 +71,7 @@ local function worker(format, sink)
-- Get sink data -- Get sink data
local data = pacmd("dump") local data = pacmd("dump")
if sink == nil then return {0, "unknown"} end
-- If mute return 0 (not "Mute") so we don't break progressbars -- If mute return 0 (not "Mute") so we don't break progressbars
if string.find(data,"set%-sink%-mute "..escape(sink).." yes") then if string.find(data,"set%-sink%-mute "..escape(sink).." yes") then