I've been working on a wine driver for the jack audio server, jackit.sourceforge.net. The concept of the server is to open audio ports and setup a callback function that will be called whenever the server needs more audio data. Everything works fine until the point of starting up the client and starting the calls to the callback function. With the latest cvs version of the jack server and some changes to the driver I haven't been able to get the driver to start the client up successfully, it just hangs after the below first two pthreads errors although I suspect this may be due to the same issues as before. Previously only about 50% of the time would the client be started up correctly, the other half of the time it would report failure to connect to the server and I would have to kill wine and restart a few times before it finally would work. I got errors like below:
~/c/Program Files/winamp$ wine Winamp.exe FIXME:pthread_cond_init FIXME:pthread_cond_signal FIXME:pthread_cond_wait fixme:ntdll:RtlNtStatusToDosError no mapping for 00000102
It appears that something went wrong between wine and wineserver communication and that strange 102 got stuck in there. I've also had strange X errors and another person reported:
"I'm having problems getting jack to work with a GTK+ app. 3 times out of 4 when I start I get: engine has shut down socket; thread exiting Xlib: unexpected async reply (sequence 0x102)!"
Any ideas?
Thanks, Chris
On Sun, 24 Mar 2002, Chris Morgan wrote:
~/c/Program Files/winamp$ wine Winamp.exe FIXME:pthread_cond_init FIXME:pthread_cond_signal FIXME:pthread_cond_wait
Maybe these need to actually be implemented then. Conditions does not map directly to a Win32 synchronization primitive, but it might be possible to implement them in terms of counters and semaphores. Condition waits do some interaction with mutexes as well, so perhaps it has hung waiting for the mutex that the condition wait is supposed to unlock.
Or, you could do some actual traces to find out if implementing these are really needed or there's some other problem...