ALSA повторно войти в обратный вызов во время выполнения обратного вызова - PullRequest
1 голос
/ 21 марта 2012

Мое приложение использует ALSA с функцией обратного вызова для воспроизведения выбранного фрагмента звука.Иногда это просто зависает.Я почти 2 дня отлаживал его и, наконец, обнаружил, что функция обратного вызова ALSA вызывается, когда она уже выполняется.Я поймал это, используя:

void MyALSACallback()
{
    std::cout << "1"; std::cout.flush();
    // ... snd_pcm_writei() call ... //
    // ... no any returns ... //
    std::cout << "2"; std::cout.flush();
    return;
}

Приложение зависает, когда у меня напечатана последовательность «11».«121212 ...» находится на консоли, когда приложение живо и воспроизводится звук.

Как это может произойти?

...