Cygwin: dsp: Fix SNDCTL_DSP_{POST,SYNC} ioctl() behaviour.

Previously, SNDCTL_DSP_POST and SNDCTL_DSP_SYNC were implemented
wrongly. Due to this issue, module-oss of pulseaudio generates
choppy sound when SNDCTL_DSP_POST is called. This patch fixes that.

Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
This commit is contained in:
Takashi Yano 2023-02-25 10:28:34 +09:00
parent e95a7a7955
commit 0ab22f0af9
1 changed files with 11 additions and 4 deletions

View File

@ -133,6 +133,8 @@ class fhandler_dev_dsp::Audio_out: public Audio
int freq_;
int bits_;
int channels_;
friend fhandler_dev_dsp;
};
static void CALLBACK waveIn_callback (HWAVEIN hWave, UINT msg,
@ -1429,11 +1431,16 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf)
return 0;
CASE (SNDCTL_DSP_POST)
if (audio_out_)
audio_out_->sendcurrent (); // force out last block whatever size..
return 0;
CASE (SNDCTL_DSP_SYNC)
// Stop audio out device
close_audio_out ();
// Stop audio in device
close_audio_in ();
if (audio_out_)
{
audio_out_->sendcurrent (); // force out last block whatever size..
audio_out_->waitforallsent (); // block till finished..
}
return 0;
default: