DragonFly commits List (threaded) for 2007-10
DragonFly BSD
DragonFly commits List (threaded) for 2007-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: cvs commit: src/sys/dev/sound/pcm dsp.c


From: "Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx>
Date: Mon, 08 Oct 2007 20:35:20 +0200

Matthew Dillon wrote:
> :  Dragonfly always passes a flag for every IO operation depending whether
> :  the mode of the operation or of the fd is set to NBIO, but it doesn't
> :  pass down fcntl() changes to the drivers. So, if you open /dev/dsp with
> :  NONBLOCK and later fcntl it to blocking, the sound driver won't be aware
> :  of this fact.
> :  
> :  Fix: don't maintain this setting in the sound driver.
> :  
> :  Requested and tested by corecode@.
> 
>     Nice catch.  I changed the NBIO stuff a while back so the threading code 
>     could issue NBIO reads and writes without actually setting the descriptor
>     to non-blocking.  This removed interference with stdio tty descriptors 
>     (which are all shared) when running threaded programs.  So drivers
>     should definitely not be trying to track that ioctl themselves any more.

Yah.  scummvm couldn't play sound, so I had to fix it.  The reason I
used scummvm in the first place was because I don't have network
connection at home right now :)

Original problematic sequence:

open(..., O_NONBLOCK)	<- sound driver records
fcntl(SETFL, not O_NONBLOCK)	<- not passed up to sound driver
write(...) <- returns EAGAIN.  user unhappy, stops playing.

cheers
  simon



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]