SDL_mixer останавливает воспроизведение музыки по определенному событию

Моя программа должна прекратить воспроизведение звука, если определенная точка находится в диапазоне, для этого у меня есть класс с функцией run(), которая работает в отдельном потоке и воспроизводит звук, используя SDL.h и SDL_mixer.h:

void SoundCheck::run()
{
    Mix_PlayMusic(music, 1);
    while(1)
    {
        if(normalize(sound[0], range_->getPos()))
        {

            printf("stop sound\n");
            Mix_HaltChannel(-1);
        }
        sleep(1);

    }
}

но когда условие if возвращает true, оно печатает «стоп-звук», но звук все еще воспроизводится, в чем проблема?


person Cynizm    schedule 25.11.2015    source источник


Ответы (1)


Mix_HaltChannel используется для остановки Mix_Chunk после запуска с Mix_PlayChannel.

Чтобы остановить Mix_Music после запуска с Mix_PlayMusic, вы должны использовать Mix_HaltMusic.

person Jason Norris    schedule 25.11.2015