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. --David
dwho@frotz.org wrote:>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. >--David >_______________________________________________ >wine-users mailing list >wine-users@winehq.com >http://www.winehq.com/mailman/listinfo/wine-users >Probably the best thing to do is get a bug report on bugzilla and attach a few of those traces to it so that someone smarter than me can have a look at them. http://bugs.codeweavers.com You need to create an account first before you can add a bug. Please add you app to the AppDB as well. At some point these two databases should be linked and It will be easier to match bugs to apps. http://appdb.codeweavers.com/ You need to create an account here as well before you can add an app. If you need help with any of this I will do what I can. Tony Lambregts