Hi,
I am trying to integrate ALSA volume event handling into a Luvit project. I
have some working (LuaJIT) code now:
function elem_event(elem, mask)
print("Volume changed...")
-- self:emit("volumechange")
return 0
end
function mixer_event(mixer, mask, elem)
local sid_ptr = ffi.new("snd_mixer_selem_id_t")
local sid = sid_ptr
alsa.snd_mixer_selem_get_id(elem, sid)
print("event add");
alsa.snd_mixer_elem_set_callback(elem, elem_event)
return 0
end
function M.monitor(card)
local mixer_ptr = ffi.new("snd_mixer_t *[1]")
alsa.snd_mixer_open(mixer_ptr, 0)
local handle = mixer_ptr[0]
alsa.snd_mixer_attach(handle, card)
alsa.snd_mixer_selem_register(handle, nil, nil)
alsa.snd_mixer_set_callback(handle, mixer_event)
alsa.snd_mixer_load(handle)
print("Ready to listen...\n");
while true do
local err = alsa.snd_mixer_wait(handle, -1)
if err >= 0 then
print("Poll ok: " .. err)
err = alsa.snd_mixer_handle_events(handle)
p(err)
end
end
alsa.snd_mixer_close(handle)
end
functio M.get_volume(card)
[..]
end
I have read the blog post about integrating libcurl into Luvit. Howeverm, I
still do not know, how to integrate the poll loop into Luvit, so that I can
run the monitor function and call other functions from the module, like
get_volume(). Furthermore, I want to emit an event, when the volume has
changed.
I'm thankful for any hints!
Best regards
Jörg Krause
--
You received this message because you are subscribed to the Google Groups
"luvit" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.