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.

Reply via email to