http://bugs.winehq.org/show_bug.cgi?id=26160
--- Comment #2 from Jörg Höhle hoehle@users.sourceforge.net 2011-02-18 06:59:04 CST --- As a consequence of this bug, MCI_PLAY fails on MacOS because READ_Q_CHANNEL is used to get the current position and it's not implemented.
I argue that this failure is wrong because the code path that depends on Direct Sound + RAW_READ to play must not use IOCTL_CDROM to get the current position, because (on Linux at least), this position is independent from RAW_READ.
In effect, on Linux (although this bug is about Mac OS), MCI_STATUS_POSITION reports bogus positions, as an effect of this bug.
Instead the code should use the wmcda->start position maintained by MCICDA_playLoop. (BTW, native appears to behave similarly w.r.t. concurrent seeking by other apps).
Likewise, MCI_SEEK should merely set an internal state variable when DS + RAW_READ is used (this is also bug #26160). IOCTL_CDROM_SEEK_AUDIO_MSF should only be used when IOCTL_*_AUDIO is used to play music, not RAW_READ. (I was considering this scenario when I wrote "don't know yet [which mode to use]" earlier.)