Attention HACK ahead: The OpenSoundSystem is just scary this is a special hack for supporting iPAQ(s) at least h3870. Features: -It does not crash when playing a 'null' file -Change sound fragment size to 12 -Force stereo on!!! (hardcoded at least uda1341 needs it) Index: qt-2.3.10/src/kernel/qsoundqss_qws.cpp =================================================================== --- qt-2.3.10.orig/src/kernel/qsoundqss_qws.cpp 2005-03-20 17:11:29.000000000 +0100 +++ qt-2.3.10/src/kernel/qsoundqss_qws.cpp 2005-03-20 23:53:46.403129133 +0100 @@ -73,7 +73,7 @@ }; #if defined(QT_QWS_IPAQ) -static const int sound_fragment_size = 12; +static const int sound_fragment_size = 14; #else static const int sound_fragment_size = 12; #endif @@ -451,8 +451,14 @@ int devSamples() { - int possible = (((max1+max2-out) / ((chunkdata.wBitsPerSample>>3)*chunkdata.channels)) - *sound_speed)/chunkdata.samplesPerSec; + if ( !(chunkdata.wBitsPerSample>>3) || + !chunkdata.channels || + !sound_speed || + !chunkdata.samplesPerSec ) + return 0; + + int possible = (((max1+max2-out) / ((chunkdata.wBitsPerSample>>3 )*chunkdata.channels)) + *sound_speed)/chunkdata.samplesPerSec; return possible; } @@ -1116,12 +1127,14 @@ if ( AFMT_U8 != v ) qDebug("Want format %d got %d", AFMT_U8, v); #endif - v=sound_stereo; if ( ioctl(fd, SNDCTL_DSP_STEREO, &v) ) + v=1; if ( ioctl(fd, SNDCTL_DSP_STEREO, &v) ) qWarning("Could not set stereo %d",v); if ( sound_stereo != v ) - qDebug("Want stereo %d got %d", sound_stereo, v); -#ifdef QT_QWS_SOUND_STEREO - sound_stereo=v; + qDebug("Want stereo %d got %d", sound_stereo, v); +#if defined(QT_QWS_IPAQ) + sound_stereo=1; +#elif QT_QWS_SOUND_STEREO + sound_stereo=v; #endif v=sound_speed; if ( ioctl(fd, SNDCTL_DSP_SPEED, &sound_speed) ) qWarning("Could not set speed %d",v);