wave/OSS and JumpStart Kindergarten...

dwho at frotz.org dwho at frotz.org
Thu Apr 4 16:08:17 CST 2002

Warning: WINE Newbie Alert.  Proceed with caution....

Background: I don't want to fork up $$$ for a separate Windows machine for my
kid so I've decided to see if I can run any of the popular brain-rot software
under WINE (Is it "WINE" or "Wine" or "wine"?) on a Linux 2.4.18 kernel.  My
first project is a vintage 1995 version of JumpStart Kindergarten.

Seeing this thing actually start up with sound just blew me away at first.
It's been more than a year since I last tried wine and the stability has come
a long way!  Well, now on to the problem....  The sound cuts off after the
first few waves are played.  I turned on --debugmsg trace+wave,warn+wave and
a few traces of my own to see what was going on.  It appears that JSK is
trying to open the sound device (wodOpen) on one thread while it is in the
middle of using it to play (wodPlay) on another thread.  Access/Modification
of the static OSS_OpenFD isn't thread safe, so when OSS_OpenDevice() fails,
the -1 is stuffed into OSS_OpenFD, which hoses the playback thread.  If I
make the necessary changes to make the OSS_OpenDevice() failure not blast
OSS_OpenFD, the playing thread eventually does finish.  All the while, the
other thread keeps tring the open again and again....  Ultimately, though
the playing thread never goes through the Reset/Unprepare/Close sequence,
so no sound after that point.

My questions: Am I looking at too low a level in the code to properly diagnose
this?  Are there higher level functions that should be ensuring complete
playback (including close)?  What other debug traces should I turn on?  Or
does this look like a bug in the app that I need to work around?

Thanks in advance for any help.

More information about the wine-users mailing list