1

我有一个设置为回调的函数,但是事件正在发生并且没有调用该函数。还有什么我需要做的吗?

// static
int volume_change_callback(snd_mixer_elem_t* elem,
                                              unsigned int mask) {
  // Do stuff
}


snd_mixer_elem_set_callback(element, volume_change_callback); 
4

1 回答 1

3

您需要使用 snd_mixer_handle_events() 来实际调用回调。(http://www.alsa-project.org/alsa-doc/alsa-lib/group___mixer.html#gae0cfb6b50ec2493281107b0649f87cb8

查看 amixer.c ( https://fossies.org/dox/alsa-utils-1.0.29/amixer_8c_source.html ) 以获取处理事件的示例:

  while (1) {
      int res;
      res = snd_mixer_wait(handle, -1);
      if (res >= 0) {
          printf("Poll ok: %i\n", res);
          res = snd_mixer_handle_events(handle);
          assert(res >= 0);
      }
  }
于 2015-10-14T17:34:00.907 回答