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:
		
							parent
							
								
									e95a7a7955
								
							
						
					
					
						commit
						0ab22f0af9
					
				| 
						 | 
				
			
			@ -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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue