Hi,

   The attached patch deals with a problem on FreeBSD:
Quite a few programs (e.g. SDL based) have a common override to a bug which
used to exist in ALSA's OSS emulation (IIRC): they open the device with 
O_NONBLOCK set, and then use fcntl to return to blocking mode. Since these 
programs shared the OSS plugin with FreeBSD, this is done on that platform too.

  However, internally FreeBSD (un)sets blocking mode using FIONBIO/FIOASYNC 
ioctls [this is called whenever fcntl(fd, F_SETFL,..) is used], and OSSv4 
doesn't recognize those ioctls - it returns EINVAL, and the fcntl call fails, 
often along with the program[1]. The patch deals with these ioctls. In 
addition, there are misc changes elsewhere (remove nonsupported parameter from 
oss_envy24ht, add 128 case to oss_sbpci since it's mentioned in the manpage).

[1] e.g. http://www.4front-tech.com/forum/viewtopic.php?t=614

Yours,
        Yair K.

Attachment: oss-freebsd-nonblocking.diff.gz
Description: GNU Zip compressed data

_______________________________________________
oss-devel mailing list
oss-devel@mailman.opensound.com
http://mailman.opensound.com/mailman/listinfo/oss-devel

Reply via email to