【问题标题】:ALSA volume change callback not triggering?ALSA 音量变化回调未触发?
【发布时间】:2016-01-12 22:21:47
【问题描述】:

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

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


snd_mixer_elem_set_callback(element, volume_change_callback); 

【问题讨论】:

    标签: callback event-handling alsa mixer


    【解决方案1】:

    您需要使用 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);
          }
      }
    

    【讨论】:

    • 链接已失效。如果您有更新的,那将不胜感激。尽管如此,您的答案还是不错的:证明使用链接而不是仅链接的答案来完成答案。谢谢!
    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多