just a few comments (mainly three merging issues) A+ > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif > +#include <unistd.h> > #include <errno.h> > #include <fcntl.h> > -#ifdef HAVE_SYS_IOCTL_H > -# include <sys/ioctl.h> > -#endif > +#include <sys/ioctl.h> those include protections shouldn't be removed > - OSS_CloseDevice(devID, audio); > + OSS_CloseDevice(0, audio); it shall still be devID, not 0 > @@ -704,9 +729,8 @@ > case WOM_CLOSE: > case WOM_DONE: > if (wwo->wFlags != DCB_NULL && > - !DriverCallback(wwo->waveDesc.dwCallback, wwo->wFlags, > - (HDRVR)wwo->waveDesc.hWave, wMsg, > - wwo->waveDesc.dwInstance, dwParam1, dwParam2)) { > + !DriverCallback(wwo->waveDesc.dwCallback, wwo->wFlags, wwo->waveDesc.hWave, > + wMsg, wwo->waveDesc.dwInstance, dwParam1, dwParam2)) { > WARN("can't notify client !\n"); > return MMSYSERR_ERROR; > } cast should be kept (now that most MM handles are now declared as void* > - !DriverCallback(wwi->waveDesc.dwCallback, wwi->wFlags, > - (HDRVR)wwi->waveDesc.hWave, wMsg, > - wwi->waveDesc.dwInstance, dwParam1, dwParam2)) { > + !DriverCallback(wwi->waveDesc.dwCallback, wwi->wFlags, wwi->waveDesc.hWave, > + wMsg, wwi->waveDesc.dwInstance, dwParam1, dwParam2)) { > WARN("can't notify client !\n"); > return MMSYSERR_ERROR; > } ditto