The results, this time really from CVS tip:
Shachar
Shachar Shemesh wrote:
The results, this time really from CVS tip:
This time:
make[3]: Entering directory `/home/sun/sources/wine/dlls/dsound/tests' ../../../tools/runtest -q -P wine -M dsound.dll -T ../../.. -p dsound_test.exe.so dsound.c && touch dsound.ok err:wave:DSDB_MapBuffer Could not map sound device for direct access (Input/output error) err:wave:DSDB_MapBuffer Use: "HardwareAcceleration" = "Emulation" in the [dsound] section of your config file. fixme:ole:CoCreateInstance no instance created for interface {279afa83-4981-11ce-a521-0020af0be560} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x80004005 dsound.c:175: Test failed: CoCreateInstance(CLSID_DirectSound) failed: E_FAIL fixme:ole:CoCreateInstance no instance created for interface {279afa83-4981-11ce-a521-0020af0be560} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x8878000a dsound.c:184: Test failed: CoCreateInstance(CLSID_DirectSound) failed: DSERR_ALLOCATED fixme:ole:CoCreateInstance no instance created for interface {279afa83-4981-11ce-a521-0020af0be560} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x8878000a dsound.c:193: Test failed: CoCreateInstance(CLSID_DirectSound) failed: DSERR_ALLOCATED fixme:ole:CoCreateInstance no instance created for interface {11ab3ec0-25ec-11d1-a4d8-00c04fc28aca} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x80004002 fixme:ole:CoCreateInstance no classfactory created for CLSID {11ab3ec0-25ec-11d1-a4d8-00c04fc28aca}, hres is 0x80040154 err:wave:DSDB_MapBuffer Could not map sound device for direct access (Input/output error) err:wave:DSDB_MapBuffer Use: "HardwareAcceleration" = "Emulation" in the [dsound] section of your config file. fixme:winmm:MMDRV_Exit Closing while ll-driver open fixme:winmm:MMDRV_Exit Closing while ll-driver open make[3]: *** [dsound.ok] Error 3 make[3]: Leaving directory `/home/sun/sources/wine/dlls/dsound/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/dsound' make[1]: *** [dsound/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2
Seems to be a missing interface. I don't think the "Emulation" warning has anything to do with it, as some tests before it printed the same error, but passed.
Shachar
Shachar Shemesh wrote:
make[3]: Entering directory `/home/sun/sources/wine/dlls/dsound/tests' ../../../tools/runtest -q -P wine -M dsound.dll -T ../../.. -p dsound_test.exe.so dsound.c && touch dsound.ok err:wave:DSDB_MapBuffer Could not map sound device for direct access (Input/output error) err:wave:DSDB_MapBuffer Use: "HardwareAcceleration" = "Emulation" in the [dsound] section of your config file.
Seems to be a missing interface. I don't think the "Emulation" warning has anything to do with it, as some tests before it printed the same error, but passed.
Shachar
This is a bug in your OSS driver. It says it is capable of doing mmap but it fails when tried.
The work around is to do as the message states: disable hardware acceleration (mmap).
Running the test manually with WINEDEBUG=+wave might give more insight.
Robert Reif wrote:
Shachar Shemesh wrote:
make[3]: Entering directory `/home/sun/sources/wine/dlls/dsound/tests' ../../../tools/runtest -q -P wine -M dsound.dll -T ../../.. -p dsound_test.exe.so dsound.c && touch dsound.ok err:wave:DSDB_MapBuffer Could not map sound device for direct access (Input/output error) err:wave:DSDB_MapBuffer Use: "HardwareAcceleration" = "Emulation" in the [dsound] section of your config file.
Seems to be a missing interface. I don't think the "Emulation" warning has anything to do with it, as some tests before it printed the same error, but passed.
Shachar
This is a bug in your OSS driver. It says it is capable of doing mmap but it fails when tried. The work around is to do as the message states: disable hardware acceleration (mmap).
The problem is that I'm not interested in this test. I just think that, off the shelf, tests should not fail. My opinion is that if this is not a problem with Wine, it shouldn't fail the test.
Running the test manually with WINEDEBUG=+wave might give more insight.
Ask, and you shall receive:
../../../tools/runtest -q -P wine -M dsound.dll -T ../../.. -p dsound_test.exe.so dsound.c && touch dsound.ok dsound.c:175: Test failed: CoCreateInstance(CLSID_DirectSound) failed: E_FAIL dsound.c:184: Test failed: CoCreateInstance(CLSID_DirectSound) failed: DSERR_ALLOCATED dsound.c:193: Test failed: CoCreateInstance(CLSID_DirectSound) failed: DSERR_ALLOCATED sun@sunlap:~/sources/wine/dlls/dsound/tests$ WINEDEBUG=+wave make test ../../../tools/runtest -q -P wine -M dsound.dll -T ../../.. -p dsound_test.exe.so dsound.c && touch dsound.ok trace:wave:OSS_WaveInit () trace:wave:OSS_WaveOutInit (0x4202cac0) /dev/dsp trace:wave:OSS_OpenDevice (0x4202cac0,1,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202cac0,0) trace:wave:OSS_RawOpenDevice open_access=O_WRONLY trace:wave:OSS_WaveOutInit Analog Devices AD1881A trace:wave:OSS_Info Formats=000001f9 ( AFMT_MU_LAW AFMT_U8 AFMT_S16_LE AFMT_S16_BE AFMT_S8 AFMT_U16_LE AFMT_U16_BE ) trace:wave:OSS_Info Caps=00003201 trace:wave:OSS_Info Revision: 1 trace:wave:OSS_Info Duplex: false trace:wave:OSS_Info Realtime: true trace:wave:OSS_Info Batch: false trace:wave:OSS_Info Coproc: false trace:wave:OSS_Info Trigger: true trace:wave:OSS_Info Mmap: true trace:wave:OSS_Info Multi: false trace:wave:OSS_Info Bind: false trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x16x2 trace:wave:OSS_CloseDevice (0x4202cac0) trace:wave:OSS_WaveOutInit out dwFormats = 000FFFFF, dwSupport = 0000006C trace:wave:OSS_WaveOutInit (0x4202ce80) /dev/dsp1 trace:wave:OSS_OpenDevice (0x4202ce80,1,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202ce80,0) trace:wave:OSS_RawOpenDevice open_access=O_WRONLY trace:wave:OSS_WaveOutInit Silicon Laboratory Si3036/8 rev trace:wave:OSS_Info Formats=000001f9 ( AFMT_MU_LAW AFMT_U8 AFMT_S16_LE AFMT_S16_BE AFMT_S8 AFMT_U16_LE AFMT_U16_BE ) trace:wave:OSS_Info Caps=00003201 trace:wave:OSS_Info Revision: 1 trace:wave:OSS_Info Duplex: false trace:wave:OSS_Info Realtime: true trace:wave:OSS_Info Batch: false trace:wave:OSS_Info Coproc: false trace:wave:OSS_Info Trigger: true trace:wave:OSS_Info Mmap: true trace:wave:OSS_Info Multi: false trace:wave:OSS_Info Bind: false trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x8x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x8x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x16x1 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 96000 for 96000x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 48000 for 48000x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 44100 for 44100x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 22050 for 22050x16x2 trace:wave:OSS_WaveOutInit DSP_SPEED: rc=0 returned 11025 for 11025x16x2 trace:wave:OSS_CloseDevice (0x4202ce80) trace:wave:OSS_WaveOutInit out dwFormats = 000FFFFF, dwSupport = 0000006C trace:wave:OSS_WaveOutInit (0x4202d240) /dev/dsp2 trace:wave:OSS_OpenDevice (0x4202d240,1,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202d240,0) trace:wave:OSS_RawOpenDevice open_access=O_WRONLY warn:wave:OSS_RawOpenDevice Couldn't open /dev/dsp2 (No such device) trace:wave:OSS_WaveOutInit (0x4202d600) /dev/dsp3 trace:wave:OSS_OpenDevice (0x4202d600,1,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202d600,0) trace:wave:OSS_RawOpenDevice open_access=O_WRONLY warn:wave:OSS_RawOpenDevice Couldn't open /dev/dsp3 (No such device) trace:wave:OSS_WaveOutInit (0x4202d9c0) /dev/dsp4 trace:wave:OSS_OpenDevice (0x4202d9c0,1,(nil),0,-1,-1,ffffffff) trace:wave:OSS_WaveOutInit (0x4202dd80) /dev/dsp5 trace:wave:OSS_OpenDevice (0x4202dd80,1,(nil),0,-1,-1,ffffffff) trace:wave:OSS_WaveInInit (0x4202cac0) /dev/dsp trace:wave:OSS_OpenDevice (0x4202cac0,0,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202cac0,0) trace:wave:OSS_RawOpenDevice open_access=O_RDONLY trace:wave:OSS_WaveInInit Analog Devices AD1881A trace:wave:OSS_Info Formats=000001f9 ( AFMT_MU_LAW AFMT_U8 AFMT_S16_LE AFMT_S16_BE AFMT_S8 AFMT_U16_LE AFMT_U16_BE ) trace:wave:OSS_Info Caps=00003201 trace:wave:OSS_Info Revision: 1 trace:wave:OSS_Info Duplex: false trace:wave:OSS_Info Realtime: true trace:wave:OSS_Info Batch: false trace:wave:OSS_Info Coproc: false trace:wave:OSS_Info Trigger: true trace:wave:OSS_Info Mmap: true trace:wave:OSS_Info Multi: false trace:wave:OSS_Info Bind: false trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x16x2 trace:wave:OSS_CloseDevice (0x4202cac0) trace:wave:OSS_WaveInInit in dwFormats = 000FFFFF, in_caps_support = 00000020 trace:wave:OSS_WaveInInit (0x4202ce80) /dev/dsp1 trace:wave:OSS_OpenDevice (0x4202ce80,0,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202ce80,0) trace:wave:OSS_RawOpenDevice open_access=O_RDONLY trace:wave:OSS_WaveInInit Silicon Laboratory Si3036/8 rev trace:wave:OSS_Info Formats=000001f9 ( AFMT_MU_LAW AFMT_U8 AFMT_S16_LE AFMT_S16_BE AFMT_S8 AFMT_U16_LE AFMT_U16_BE ) trace:wave:OSS_Info Caps=00003201 trace:wave:OSS_Info Revision: 1 trace:wave:OSS_Info Duplex: false trace:wave:OSS_Info Realtime: true trace:wave:OSS_Info Batch: false trace:wave:OSS_Info Coproc: false trace:wave:OSS_Info Trigger: true trace:wave:OSS_Info Mmap: true trace:wave:OSS_Info Multi: false trace:wave:OSS_Info Bind: false trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x8x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x8x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x16x1 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 96000 for 96000x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 48000 for 48000x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 44100 for 44100x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 22050 for 22050x16x2 trace:wave:OSS_WaveInInit DSP_SPEED: rc=0 returned 11025 for 11025x16x2 trace:wave:OSS_CloseDevice (0x4202ce80) trace:wave:OSS_WaveInInit in dwFormats = 000FFFFF, in_caps_support = 00000020 trace:wave:OSS_WaveInInit (0x4202d240) /dev/dsp2 trace:wave:OSS_OpenDevice (0x4202d240,0,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202d240,0) trace:wave:OSS_RawOpenDevice open_access=O_RDONLY warn:wave:OSS_RawOpenDevice Couldn't open /dev/dsp2 (No such device) trace:wave:OSS_WaveInInit (0x4202d600) /dev/dsp3 trace:wave:OSS_OpenDevice (0x4202d600,0,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202d600,0) trace:wave:OSS_RawOpenDevice open_access=O_RDONLY warn:wave:OSS_RawOpenDevice Couldn't open /dev/dsp3 (No such device) trace:wave:OSS_WaveInInit (0x4202d9c0) /dev/dsp4 trace:wave:OSS_OpenDevice (0x4202d9c0,0,(nil),0,-1,-1,ffffffff) trace:wave:OSS_WaveInInit (0x4202dd80) /dev/dsp5 trace:wave:OSS_OpenDevice (0x4202dd80,0,(nil),0,-1,-1,ffffffff) trace:wave:OSS_WaveFullDuplexInit (0x4202cac0) /dev/dsp trace:wave:OSS_OpenDevice (0x4202cac0,2,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202cac0,0) trace:wave:OSS_RawOpenDevice open_access=O_RDWR trace:wave:OSS_WaveFullDuplexInit Analog Devices AD1881A trace:wave:OSS_Info Formats=000001f9 ( AFMT_MU_LAW AFMT_U8 AFMT_S16_LE AFMT_S16_BE AFMT_S8 AFMT_U16_LE AFMT_U16_BE ) trace:wave:OSS_Info Caps=00003301 trace:wave:OSS_Info Revision: 1 trace:wave:OSS_Info Duplex: true trace:wave:OSS_Info Realtime: true trace:wave:OSS_Info Batch: false trace:wave:OSS_Info Coproc: false trace:wave:OSS_Info Trigger: true trace:wave:OSS_Info Mmap: true trace:wave:OSS_Info Multi: false trace:wave:OSS_Info Bind: false trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x16x2 trace:wave:OSS_CloseDevice (0x4202cac0) trace:wave:OSS_WaveFullDuplexInit duplex dwFormats = 000FFFFF, dwSupport = 0000006C trace:wave:OSS_WaveFullDuplexInit (0x4202ce80) /dev/dsp1 trace:wave:OSS_OpenDevice (0x4202ce80,2,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202ce80,0) trace:wave:OSS_RawOpenDevice open_access=O_RDWR trace:wave:OSS_WaveFullDuplexInit Silicon Laboratory Si3036/8 rev trace:wave:OSS_Info Formats=000001f9 ( AFMT_MU_LAW AFMT_U8 AFMT_S16_LE AFMT_S16_BE AFMT_S8 AFMT_U16_LE AFMT_U16_BE ) trace:wave:OSS_Info Caps=00003301 trace:wave:OSS_Info Revision: 1 trace:wave:OSS_Info Duplex: true trace:wave:OSS_Info Realtime: true trace:wave:OSS_Info Batch: false trace:wave:OSS_Info Coproc: false trace:wave:OSS_Info Trigger: true trace:wave:OSS_Info Mmap: true trace:wave:OSS_Info Multi: false trace:wave:OSS_Info Bind: false trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x8x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x8x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x16x1 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 96000 for 96000x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 48000 for 48000x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 44100 for 44100x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 22050 for 22050x16x2 trace:wave:OSS_WaveFullDuplexInit DSP_SPEED: rc=0 returned 11025 for 11025x16x2 trace:wave:OSS_CloseDevice (0x4202ce80) trace:wave:OSS_WaveFullDuplexInit duplex dwFormats = 000FFFFF, dwSupport = 0000006C trace:wave:OSS_WaveFullDuplexInit (0x4202d240) /dev/dsp2 trace:wave:OSS_OpenDevice (0x4202d240,2,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202d240,0) trace:wave:OSS_RawOpenDevice open_access=O_RDWR warn:wave:OSS_RawOpenDevice Couldn't open /dev/dsp2 (No such device) trace:wave:OSS_WaveFullDuplexInit (0x4202d600) /dev/dsp3 trace:wave:OSS_OpenDevice (0x4202d600,2,(nil),0,-1,-1,ffffffff) trace:wave:OSS_RawOpenDevice (0x4202d600,0) trace:wave:OSS_RawOpenDevice open_access=O_RDWR warn:wave:OSS_RawOpenDevice Couldn't open /dev/dsp3 (No such device) trace:wave:OSS_WaveFullDuplexInit (0x4202d9c0) /dev/dsp4 trace:wave:OSS_OpenDevice (0x4202d9c0,2,(nil),0,-1,-1,ffffffff) trace:wave:OSS_WaveFullDuplexInit (0x4202dd80) /dev/dsp5 trace:wave:OSS_OpenDevice (0x4202dd80,2,(nil),0,-1,-1,ffffffff) trace:wave:OSS_widMessage (0, DRVM_INIT, 00000000, 00000000, 00000000); trace:wave:OSS_widMessage (0, WIDM_GETNUMDEVS, 00000000, 00000000, 00000000); trace:wave:OSS_wodMessage (0, DRVM_INIT, 00000000, 00000000, 00000000); trace:wave:OSS_wodMessage (0, WODM_GETNUMDEVS, 00000000, 00000000, 00000000); trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CFCC4, 00000000); trace:wave:wodDsCreate (0,0x406cfcc4) trace:wave:IDsDriverImpl_GetDriverDesc (0x4021a700,0x4021ad64) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CFBD4, 406CFC28, 00030080); trace:wave:wodOpen (0, 0x406cfc28[cb=40703480], 00030080); trace:wave:supportedFormat (0x4021a720) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) trace:wave:OSS_OpenDevice (0x4202cac0,2,0x406cfad0,0,22050,1,8) trace:wave:OSS_RawOpenDevice (0x4202cac0,0) trace:wave:OSS_RawOpenDevice open_access=O_RDWR trace:wave:wodOpen OSS_OpenDevice returned this format: 22050x8x2 trace:wave:wodOpen got 16 2048 byte fragments (46 ms/fragment) trace:wave:wodOpen fd=11 fragstotal=16 fragsize=2048 BufferSize=32768 trace:wave:wodOpen wBitsPerSample=8, nAvgBytesPerSec=44100, nSamplesPerSec=22050, nChannels=2 nBlockAlign=2! trace:wave:wodNotifyClient wMsg = 0x03bb (WOM_OPEN) dwParm1 = 0000 dwParam2 = 0000 trace:wave:IDsDriverImpl_Open (0x4021a700) trace:wave:IDsDriverImpl_GetCaps (0x4021a700,0x4021af90) trace:wave:IDsDriverImpl_CreateSoundBuffer (0x4021a700,0x4021a720,1,0,0x4021b0d0,0x4021b0c8,0x4021b0c4) trace:wave:DSD_CreatePrimaryBuffer (0x4021a700,0x4021a720,1,0,0x4021b0d0,0x4021b0c8,0x4021b0c4) trace:wave:DSDB_MapBuffer (0x4022b530), format=22050x8x2 err:wave:DSDB_MapBuffer Could not map sound device for direct access (Input/output error) err:wave:DSDB_MapBuffer Use: "HardwareAcceleration" = "Emulation" in the [dsound] section of your config file. fixme:ole:CoCreateInstance no instance created for interface {279afa83-4981-11ce-a521-0020af0be560} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x80004005 dsound.c:175: Test failed: CoCreateInstance(CLSID_DirectSound) failed: E_FAIL trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CFCC4, 00000000); trace:wave:wodDsCreate (0,0x406cfcc4) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b550,0x4022b58c) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CFBD4, 406CFC28, 00030080); trace:wave:wodOpen (0, 0x406cfc28[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b9f8) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated fixme:ole:CoCreateInstance no instance created for interface {279afa83-4981-11ce-a521-0020af0be560} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x8878000a dsound.c:184: Test failed: CoCreateInstance(CLSID_DirectSound) failed: DSERR_ALLOCATED trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CFCC4, 00000000); trace:wave:wodDsCreate (0,0x406cfcc4) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b570,0x4022ba34) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CFBD4, 406CFC28, 00030080); trace:wave:wodOpen (0, 0x406cfc28[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b590) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated fixme:ole:CoCreateInstance no instance created for interface {279afa83-4981-11ce-a521-0020af0be560} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x8878000a dsound.c:193: Test failed: CoCreateInstance(CLSID_DirectSound) failed: DSERR_ALLOCATED fixme:ole:CoCreateInstance no instance created for interface {11ab3ec0-25ec-11d1-a4d8-00c04fc28aca} of class {47d4d946-62e8-11cf-93bc-444553540000}, hres is 0x80004002 fixme:ole:CoCreateInstance no classfactory created for CLSID {11ab3ec0-25ec-11d1-a4d8-00c04fc28aca}, hres is 0x80040154 trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CFD18, 00000000); trace:wave:wodDsCreate (0,0x406cfd18) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b5b0,0x4022ba34) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CFC28, 406CFC7C, 00030080); trace:wave:wodOpen (0, 0x406cfc7c[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b5d0) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CFD18, 00000000); trace:wave:wodDsCreate (0,0x406cfd18) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b5f0,0x4022ba34) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CFC28, 406CFC7C, 00030080); trace:wave:wodOpen (0, 0x406cfc7c[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b610) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CFD18, 00000000); trace:wave:wodDsCreate (0,0x406cfd18) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b630,0x4022ba34) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CFC28, 406CFC7C, 00030080); trace:wave:wodOpen (0, 0x406cfc7c[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b650) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDDESC, 00000000, 406CFBF4, 00000000); trace:wave:wodDsDesc (0,0x406cfbf4) trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CF9D8, 00000000); trace:wave:wodDsCreate (0,0x406cf9d8) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b670,0x4022ba34) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CF8E8, 406CF93C, 00030080); trace:wave:wodOpen (0, 0x406cf93c[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b690) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDDESC, 00000000, 406CFBF4, 00000000); trace:wave:wodDsDesc (0,0x406cfbf4) trace:wave:OSS_wodMessage (0, DRV_QUERYDSOUNDIFACE, 00000000, 406CF9D8, 00000000); trace:wave:wodDsCreate (0,0x406cf9d8) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b6b0,0x4022ba34) trace:wave:OSS_wodMessage (0, WODM_OPEN, 406CF8E8, 406CF93C, 00030080); trace:wave:wodOpen (0, 0x406cf93c[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b6d0) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) warn:wave:wodOpen already allocated trace:wave:OSS_wodMessage (1, DRV_QUERYDSOUNDDESC, 00000000, 406CFBF4, 00000000); trace:wave:wodDsDesc (1,0x406cfbf4) trace:wave:OSS_wodMessage (1, DRV_QUERYDSOUNDIFACE, 00000000, 406CF9D8, 00000000); trace:wave:wodDsCreate (1,0x406cf9d8) trace:wave:IDsDriverImpl_GetDriverDesc (0x4022b6f0,0x4022ba34) trace:wave:OSS_wodMessage (1, WODM_OPEN, 406CF8E8, 406CF93C, 00030080); trace:wave:wodOpen (1, 0x406cf93c[cb=40703480], 00030080); trace:wave:supportedFormat (0x4022b710) trace:wave:wodOpen OSS_OpenDevice requested this format: 22050x8x2 WAVE_FORMAT_PCM trace:wave:wodOpen requesting 32 2048 byte fragments (46 ms/fragment) trace:wave:OSS_OpenDevice (0x4202ce80,2,0x406cf7e4,0,22050,1,8) trace:wave:OSS_RawOpenDevice (0x4202ce80,0) trace:wave:OSS_RawOpenDevice open_access=O_RDWR trace:wave:wodOpen OSS_OpenDevice returned this format: 22050x8x2 trace:wave:wodOpen got 2 2048 byte fragments (46 ms/fragment) trace:wave:wodOpen fd=16 fragstotal=2 fragsize=2048 BufferSize=4096 trace:wave:wodPlayer waiting 4294967295ms (4294967295,4294967295) trace:wave:wodOpen wBitsPerSample=8, nAvgBytesPerSec=44100, nSamplesPerSec=22050, nChannels=2 nBlockAlign=2! trace:wave:wodNotifyClient wMsg = 0x03bb (WOM_OPEN) dwParm1 = 0000 dwParam2 = 0000 trace:wave:IDsDriverImpl_Open (0x4022b6f0) trace:wave:IDsDriverImpl_GetCaps (0x4022b6f0,0x4022bc60) trace:wave:IDsDriverImpl_CreateSoundBuffer (0x4022b6f0,0x4022b710,1,0,0x4022bda0,0x4022bd98,0x4022bd94) trace:wave:DSD_CreatePrimaryBuffer (0x4022b6f0,0x4022b710,1,0,0x4022bda0,0x4022bd98,0x4022bd94) trace:wave:DSDB_MapBuffer (0x4022b7d0), format=22050x8x2 err:wave:DSDB_MapBuffer Could not map sound device for direct access (Input/output error) err:wave:DSDB_MapBuffer Use: "HardwareAcceleration" = "Emulation" in the [dsound] section of your config file. fixme:winmm:MMDRV_Exit Closing while ll-driver open fixme:winmm:MMDRV_Exit Closing while ll-driver open trace:wave:OSS_widMessage (0, DRVM_EXIT, 00000000, 00000000, 00000000); trace:wave:OSS_wodMessage (0, DRVM_EXIT, 00000000, 00000000, 00000000); make: *** [dsound.ok] Error 3
Shachar Shemesh wrote:
The problem is that I'm not interested in this test. I just think that, off the shelf, tests should not fail. My opinion is that if this is not a problem with Wine, it shouldn't fail the test.
The issue from a test perspective is that wine fails differently than windows under this situation. Wine really does initialization at CoCreateInstance and our Initialize really does nothing. Wine should fail at Initialize, not CoCreateInstance.
Moving initialization to Initialize will require some restructuring of the code in dsound.dll. I'll look into it but won't promis any fixes real soon.
The thing to understand is that any failure of "make test" due to either default configuration or a bug in anything other than wine is a failure of the test system. If "make test" passed, and Alexandre committed a patch, then this patch MUST pass on all machines. If that's not the case, then people will (and do) not use the test infrastructure, and more tests fail. That's not good!
As such, I think you should fix your test to not fail (or mark it as a test wine does not pass). If you have different behaviors whether the driver bug exists or not on my system, split the test into two parts. This way, you can have one test that passes on wine whether or not the driver is broken (i.e. - if the bug in wine comes up, ignore it). The second test is one that fails if the bug in the driver doesn't come up, and if the bug in the driver does come up, fails if wine handles it differently from Windows. Mark this test as "fails on wine" until you fix it.
This way, the tests won't fail on my machine, regardless of how it is set up. Like I said, getting the tests to pass on all wine hackers machines is crucial to build confidence with the tests, thus allowing people to run the tests prior to sending patches.
If you are in Stuttgart, feel free to grab me and talk about it.
Shachar
Robert Reif wrote:
Shachar Shemesh wrote:
The problem is that I'm not interested in this test. I just think that, off the shelf, tests should not fail. My opinion is that if this is not a problem with Wine, it shouldn't fail the test.
The issue from a test perspective is that wine fails differently than windows under this situation. Wine really does initialization at CoCreateInstance and our Initialize really does nothing. Wine should fail at Initialize, not CoCreateInstance. Moving initialization to Initialize will require some restructuring of the code in dsound.dll. I'll look into it but won't promis any fixes real soon.
Shachar Shemesh wrote:
The problem is that I'm not interested in this test. I just think that, off the shelf, tests should not fail. My opinion is that if this is not a problem with Wine, it shouldn't fail the test.
Does this patch help? It should fail the same way windows does now.
Index: dlls/dsound/dsound.c =================================================================== RCS file: /home/wine/wine/dlls/dsound/dsound.c,v retrieving revision 1.31 diff -u -p -r1.31 dsound.c --- dlls/dsound/dsound.c 15 Mar 2005 15:40:36 -0000 1.31 +++ dlls/dsound/dsound.c 1 May 2005 21:40:14 -0000 @@ -684,11 +684,107 @@ static HRESULT WINAPI IDirectSoundImpl_I LPCGUID lpcGuid) { IDirectSoundImpl *This = (IDirectSoundImpl *)iface; + HRESULT hr = DS_OK; TRACE("(%p,%s)\n",This,debugstr_guid(lpcGuid));
- This->initialized = TRUE; + if (This->initialized == TRUE) { + WARN("already initialized\n"); + return DSERR_ALREADYINITIALIZED; + }
- return DS_OK; + /* If the driver requests being opened through MMSYSTEM + * (which is recommended by the DDK), it is supposed to happen + * before the DirectSound interface is opened */ + if (This->drvdesc.dwFlags & DSDDESC_DOMMSYSTEMOPEN) + { + DWORD flags = CALLBACK_FUNCTION; + + /* disable direct sound if requested */ + if (ds_hw_accel != DS_HW_ACCEL_EMULATION) + flags |= WAVE_DIRECTSOUND; + + hr = mmErr(waveOutOpen(&(This->hwo), + This->drvdesc.dnDevNode, This->pwfx, + (DWORD)DSOUND_callback, (DWORD)This, + flags)); + if (hr != DS_OK) { + WARN("waveOutOpen failed\n"); + return hr; + } + } + + if (This->driver) { + hr = IDsDriver_Open(This->driver); + if (hr != DS_OK) { + WARN("IDsDriver_Open failed\n"); + return hr; + } + + /* the driver is now open, so it's now allowed to call GetCaps */ + hr = IDsDriver_GetCaps(This->driver,&(This->drvcaps)); + if (hr != DS_OK) { + WARN("IDsDriver_GetCaps failed\n"); + return hr; + } + } else { + WAVEOUTCAPSA woc; + hr = mmErr(waveOutGetDevCapsA(This->drvdesc.dnDevNode, &woc, sizeof(woc))); + if (hr != DS_OK) { + WARN("waveOutGetDevCaps failed\n"); + return hr; + } + ZeroMemory(&This->drvcaps, sizeof(This->drvcaps)); + if ((woc.dwFormats & WAVE_FORMAT_1M08) || + (woc.dwFormats & WAVE_FORMAT_2M08) || + (woc.dwFormats & WAVE_FORMAT_4M08) || + (woc.dwFormats & WAVE_FORMAT_48M08) || + (woc.dwFormats & WAVE_FORMAT_96M08)) { + This->drvcaps.dwFlags |= DSCAPS_PRIMARY8BIT; + This->drvcaps.dwFlags |= DSCAPS_PRIMARYMONO; + } + if ((woc.dwFormats & WAVE_FORMAT_1M16) || + (woc.dwFormats & WAVE_FORMAT_2M16) || + (woc.dwFormats & WAVE_FORMAT_4M16) || + (woc.dwFormats & WAVE_FORMAT_48M16) || + (woc.dwFormats & WAVE_FORMAT_96M16)) { + This->drvcaps.dwFlags |= DSCAPS_PRIMARY16BIT; + This->drvcaps.dwFlags |= DSCAPS_PRIMARYMONO; + } + if ((woc.dwFormats & WAVE_FORMAT_1S08) || + (woc.dwFormats & WAVE_FORMAT_2S08) || + (woc.dwFormats & WAVE_FORMAT_4S08) || + (woc.dwFormats & WAVE_FORMAT_48S08) || + (woc.dwFormats & WAVE_FORMAT_96S08)) { + This->drvcaps.dwFlags |= DSCAPS_PRIMARY8BIT; + This->drvcaps.dwFlags |= DSCAPS_PRIMARYSTEREO; + } + if ((woc.dwFormats & WAVE_FORMAT_1S16) || + (woc.dwFormats & WAVE_FORMAT_2S16) || + (woc.dwFormats & WAVE_FORMAT_4S16) || + (woc.dwFormats & WAVE_FORMAT_48S16) || + (woc.dwFormats & WAVE_FORMAT_96S16)) { + This->drvcaps.dwFlags |= DSCAPS_PRIMARY16BIT; + This->drvcaps.dwFlags |= DSCAPS_PRIMARYSTEREO; + } + if (ds_emuldriver) + This->drvcaps.dwFlags |= DSCAPS_EMULDRIVER; + This->drvcaps.dwMinSecondarySampleRate = DSBFREQUENCY_MIN; + This->drvcaps.dwMaxSecondarySampleRate = DSBFREQUENCY_MAX; + This->drvcaps.dwPrimaryBuffers = 1; + } + + hr = DSOUND_PrimaryCreate((IDirectSoundImpl*)This); + if (hr == DS_OK) { + This->initialized = TRUE; + DSOUND_renderer = (IDirectSoundImpl*)This; + timeBeginPeriod(DS_TIME_RES); + DSOUND_renderer->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer, + (DWORD)DSOUND_renderer, TIME_PERIODIC | TIME_CALLBACK_FUNCTION); + } else { + WARN("DSOUND_PrimaryCreate failed\n"); + } + + return hr; }
static HRESULT WINAPI IDirectSoundImpl_VerifyCertification( @@ -841,11 +937,11 @@ HRESULT WINAPI IDirectSoundImpl_Create( return DSERR_OUTOFMEMORY; }
- pDS->pwfx->wFormatTag = WAVE_FORMAT_PCM; /* We rely on the sound driver to return the actual sound format of * the device if it does not support 22050x8x2 and is given the * WAVE_DIRECTSOUND flag. */ + pDS->pwfx->wFormatTag = WAVE_FORMAT_PCM; pDS->pwfx->nSamplesPerSec = 22050; pDS->pwfx->wBitsPerSample = 8; pDS->pwfx->nChannels = 2; @@ -853,95 +949,6 @@ HRESULT WINAPI IDirectSoundImpl_Create( pDS->pwfx->nAvgBytesPerSec = pDS->pwfx->nSamplesPerSec * pDS->pwfx->nBlockAlign; pDS->pwfx->cbSize = 0;
- /* If the driver requests being opened through MMSYSTEM - * (which is recommended by the DDK), it is supposed to happen - * before the DirectSound interface is opened */ - if (pDS->drvdesc.dwFlags & DSDDESC_DOMMSYSTEMOPEN) - { - DWORD flags = CALLBACK_FUNCTION; - - /* disable direct sound if requested */ - if (ds_hw_accel != DS_HW_ACCEL_EMULATION) - flags |= WAVE_DIRECTSOUND; - - err = mmErr(waveOutOpen(&(pDS->hwo), - pDS->drvdesc.dnDevNode, pDS->pwfx, - (DWORD)DSOUND_callback, (DWORD)pDS, - flags)); - if (err != DS_OK) { - WARN("waveOutOpen failed\n"); - HeapFree(GetProcessHeap(),0,pDS); - *ppDS = NULL; - return err; - } - } - - if (drv) { - err = IDsDriver_Open(drv); - if (err != DS_OK) { - WARN("IDsDriver_Open failed\n"); - HeapFree(GetProcessHeap(),0,pDS); - *ppDS = NULL; - return err; - } - - /* the driver is now open, so it's now allowed to call GetCaps */ - err = IDsDriver_GetCaps(drv,&(pDS->drvcaps)); - if (err != DS_OK) { - WARN("IDsDriver_GetCaps failed\n"); - HeapFree(GetProcessHeap(),0,pDS); - *ppDS = NULL; - return err; - } - } else { - WAVEOUTCAPSA woc; - err = mmErr(waveOutGetDevCapsA(pDS->drvdesc.dnDevNode, &woc, sizeof(woc))); - if (err != DS_OK) { - WARN("waveOutGetDevCaps failed\n"); - HeapFree(GetProcessHeap(),0,pDS); - *ppDS = NULL; - return err; - } - ZeroMemory(&pDS->drvcaps, sizeof(pDS->drvcaps)); - if ((woc.dwFormats & WAVE_FORMAT_1M08) || - (woc.dwFormats & WAVE_FORMAT_2M08) || - (woc.dwFormats & WAVE_FORMAT_4M08) || - (woc.dwFormats & WAVE_FORMAT_48M08) || - (woc.dwFormats & WAVE_FORMAT_96M08)) { - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARY8BIT; - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARYMONO; - } - if ((woc.dwFormats & WAVE_FORMAT_1M16) || - (woc.dwFormats & WAVE_FORMAT_2M16) || - (woc.dwFormats & WAVE_FORMAT_4M16) || - (woc.dwFormats & WAVE_FORMAT_48M16) || - (woc.dwFormats & WAVE_FORMAT_96M16)) { - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARY16BIT; - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARYMONO; - } - if ((woc.dwFormats & WAVE_FORMAT_1S08) || - (woc.dwFormats & WAVE_FORMAT_2S08) || - (woc.dwFormats & WAVE_FORMAT_4S08) || - (woc.dwFormats & WAVE_FORMAT_48S08) || - (woc.dwFormats & WAVE_FORMAT_96S08)) { - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARY8BIT; - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARYSTEREO; - } - if ((woc.dwFormats & WAVE_FORMAT_1S16) || - (woc.dwFormats & WAVE_FORMAT_2S16) || - (woc.dwFormats & WAVE_FORMAT_4S16) || - (woc.dwFormats & WAVE_FORMAT_48S16) || - (woc.dwFormats & WAVE_FORMAT_96S16)) { - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARY16BIT; - pDS->drvcaps.dwFlags |= DSCAPS_PRIMARYSTEREO; - } - if (ds_emuldriver) - pDS->drvcaps.dwFlags |= DSCAPS_EMULDRIVER; - pDS->drvcaps.dwMinSecondarySampleRate = DSBFREQUENCY_MIN; - pDS->drvcaps.dwMaxSecondarySampleRate = DSBFREQUENCY_MAX; - pDS->drvcaps.dwPrimaryBuffers = 1; - } - InitializeCriticalSection(&(pDS->mixlock)); pDS->mixlock.DebugInfo->Spare[1] = (DWORD)"DSOUND_mixlock";
@@ -1649,22 +1656,11 @@ HRESULT WINAPI DSOUND_Create( LPDIRECTSOUND8 pDS; hr = IDirectSoundImpl_Create(&devGuid, &pDS); if (hr == DS_OK) { - hr = DSOUND_PrimaryCreate((IDirectSoundImpl*)pDS); - if (hr == DS_OK) { - hr = IDirectSound_IDirectSound_Create(pDS, ppDS); - if (*ppDS) { - IDirectSound_IDirectSound_AddRef(*ppDS); - - DSOUND_renderer = (IDirectSoundImpl*)pDS; - timeBeginPeriod(DS_TIME_RES); - DSOUND_renderer->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer, - (DWORD)DSOUND_renderer, TIME_PERIODIC | TIME_CALLBACK_FUNCTION); - } else { - WARN("IDirectSound_IDirectSound_Create failed\n"); - IDirectSound8_Release(pDS); - } - } else { - WARN("DSOUND_PrimaryCreate failed\n"); + hr = IDirectSound_IDirectSound_Create(pDS, ppDS); + if (*ppDS) + IDirectSound_IDirectSound_AddRef(*ppDS); + else { + WARN("IDirectSound_IDirectSound_Create failed\n"); IDirectSound8_Release(pDS); } } else @@ -1754,22 +1750,11 @@ HRESULT WINAPI DSOUND_Create8( LPDIRECTSOUND8 pDS; hr = IDirectSoundImpl_Create(&devGuid, &pDS); if (hr == DS_OK) { - hr = DSOUND_PrimaryCreate((IDirectSoundImpl*)pDS); - if (hr == DS_OK) { - hr = IDirectSound8_IDirectSound8_Create(pDS, ppDS); - if (*ppDS) { - IDirectSound8_IDirectSound8_AddRef(*ppDS); - - DSOUND_renderer = (IDirectSoundImpl*)pDS; - timeBeginPeriod(DS_TIME_RES); - DSOUND_renderer->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer, - (DWORD)DSOUND_renderer, TIME_PERIODIC | TIME_CALLBACK_FUNCTION); - } else { - WARN("IDirectSound8_IDirectSound8_Create failed\n"); - IDirectSound8_Release(pDS); - } - } else { - WARN("DSOUND_PrimaryCreate failed\n"); + hr = IDirectSound8_IDirectSound8_Create(pDS, ppDS); + if (*ppDS) + IDirectSound8_IDirectSound8_AddRef(*ppDS); + else { + WARN("IDirectSound8_IDirectSound8_Create failed\n"); IDirectSound8_Release(pDS); } } else Index: dlls/dsound/tests/dsound.c =================================================================== RCS file: /home/wine/wine/dlls/dsound/tests/dsound.c,v retrieving revision 1.52 diff -u -p -r1.52 dsound.c --- dlls/dsound/tests/dsound.c 30 Mar 2005 10:21:44 -0000 1.52 +++ dlls/dsound/tests/dsound.c 1 May 2005 21:40:14 -0000 @@ -103,6 +103,11 @@ static void IDirectSound_test(LPDIRECTSO } }
+ rc=IDirectSound_Initialize(dso,lpGuid); + ok(rc==DSERR_ALREADYINITIALIZED, "IDirectSound_Initialize() " + "should have returned DSERR_ALREADYINITIALIZED: %s\n", + DXGetErrorString8(rc)); + /* DSOUND: Error: Invalid caps buffer */ rc=IDirectSound_GetCaps(dso,0); ok(rc==DSERR_INVALIDPARAM,"IDirectSound_GetCaps(NULL) " Index: dlls/dsound/tests/dsound8.c =================================================================== RCS file: /home/wine/wine/dlls/dsound/tests/dsound8.c,v retrieving revision 1.21 diff -u -p -r1.21 dsound8.c --- dlls/dsound/tests/dsound8.c 11 Apr 2005 12:52:00 -0000 1.21 +++ dlls/dsound/tests/dsound8.c 1 May 2005 21:40:15 -0000 @@ -118,6 +118,11 @@ static void IDirectSound8_test(LPDIRECTS } }
+ rc=IDirectSound8_Initialize(dso,lpGuid); + ok(rc==DSERR_ALREADYINITIALIZED, "IDirectSound8_Initialize() " + "should have returned DSERR_ALREADYINITIALIZED: %s\n", + DXGetErrorString8(rc)); + /* DSOUND: Error: Invalid caps buffer */ rc=IDirectSound8_GetCaps(dso,0); ok(rc==DSERR_INVALIDPARAM,"IDirectSound8_GetCaps() "
Robert Reif wrote:
Shachar Shemesh wrote:
The problem is that I'm not interested in this test. I just think that, off the shelf, tests should not fail. My opinion is that if this is not a problem with Wine, it shouldn't fail the test.
Does this patch help? It should fail the same way windows does now.
No, it regresses tests that used to pass:
Shachar Shemesh wrote:
The results, this time really from CVS tip:
make[3]: Entering directory `/home/sun/sources/wine/dlls/gdi/tests' ../../../tools/runtest -q -P wine -M gdi32.dll -T ../../.. -p gdi32_test.exe.so metafile.c && touch metafile.ok metafile.c:468: Test failed: (0,0)->(1000,1000), expected (0,0)->(1819,6675) metafile.c:468: Test failed: (0,0)->(1000,1000), expected (0,0)->(1819,6675) fixme:dc:GdiIsMetaPrintDC (nil) fixme:dc:GdiIsPlayMetafileDC (nil) fixme:dc:GdiIsMetaPrintDC 0x18c fixme:dc:GdiIsPlayMetafileDC 0x18c fixme:dc:GdiIsMetaPrintDC 0x19c fixme:dc:GdiIsPlayMetafileDC 0x19c make[3]: *** [metafile.ok] Error 2 make[3]: Leaving directory `/home/sun/sources/wine/dlls/gdi/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/gdi' make[1]: *** [gdi/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2
I'm not sure what is the cause of this one.
Shachar
Shachar Shemesh wrote:
The results, this time really from CVS tip:
make[3]: Entering directory `/home/sun/sources/wine/dlls/kernel/tests' ../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.exe.so file.c && touch file.ok fixme:vxd:VXD_Open Unknown/unsupported VxD L"bogus.vxd". Try setting Windows version to 'nt40' or 'win31'. epoll_ctl: Operation not permitted file.c:1392: Test failed: ret = 1, error 12345678 make[3]: *** [file.ok] Error 1 make[3]: Leaving directory `/home/sun/sources/wine/dlls/kernel/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/kernel' make[1]: *** [kernel/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2
Shachar Shemesh wrote:
The results, this time really from CVS tip:
make[3]: Entering directory `/home/sun/sources/wine/dlls/ole32/tests' ../../../tools/runtest -q -P wine -M ole32.dll -T ../../.. -p ole32_test.exe.so stg_prop.c && touch stg_prop.ok err:heap:HEAP_ValidateInUseArena Heap 401e0000: in-use arena 40218fc8 next block has PREV_FREE flag err:heap:HEAP_ValidateInUseArena Heap 401e0000: prev arena 40218f60 is not prev for in-use 40218fc8 err:heap:HEAP_ValidateInUseArena Heap 401e0000: prev arena 40218f60 is not prev for in-use 40218fc8 err:heap:HEAP_ValidateInUseArena Heap 401e0000: in-use arena 40218fe8 next block has PREV_FREE flag err:heap:HEAP_ValidateInUseArena Heap 401e0000: in-use arena 40218fe8 next block has PREV_FREE flag stg_prop.c:372: Test failed: Didn't get expected type or value for property make[3]: *** [stg_prop.ok] Error 1 make[3]: Leaving directory `/home/sun/sources/wine/dlls/ole32/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/ole32' make[1]: *** [ole32/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2
Shachar Shemesh wrote:
The results, this time really from CVS tip:
Shachar
../../../tools/runtest -q -P wine -M oleaut32.dll -T ../../.. -p oleaut32_test.exe.so typelib.c && touch typelib.ok err:ole:TLB_ReadTypeLib Loading of typelib L"olepro32.dll" failed with error 1812 typelib.c:39: Test failed: Could not load type library fixme:ole:RegisterTypeLib Registering non-oleautomation interface! fixme:ole:RegisterTypeLib Registering non-oleautomation interface! fixme:ole:RegisterTypeLib Registering non-oleautomation interface! fixme:ole:ITypeInfo_fnRelease destroy child objects fixme:ole:ITypeInfo_fnRelease destroy child objects fixme:ole:ITypeInfo_fnRelease destroy child objects fixme:ole:ITypeInfo_fnRelease destroy child objects fixme:ole:ITypeInfo_fnRelease destroy child objects fixme:ole:ITypeInfo_fnRelease destroy child objects make[3]: *** [typelib.ok] Error 1 make[3]: Leaving directory `/home/sun/sources/wine/dlls/oleaut32/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/oleaut32' make[1]: *** [oleaut32/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2
Copying olepro32.dll from a windows solves this one.
Shachar
Shachar Shemesh wrote:
The results, this time really from CVS tip:
make[3]: Entering directory `/home/sun/sources/wine/dlls/user/tests' ../../../tools/runtest -q -P wine -M user32.dll -T ../../.. -p user32_test.exe.so win.c && touch win.ok fixme:win:WIN_CreateWindowEx Parent is HWND_MESSAGE win.c:2165: Test failed: wrong focus window (nil) win.c:2173: Test failed: wrong focus window (nil) win.c:2176: Test failed: no message available win.c:2177: Test failed: hwnd (nil) message 0100 win.c:2203: Test failed: no message available win.c:2204: Test failed: hwnd (nil) message 0100 win.c:2642: Test failed: wrong update region win.c:2655: Test failed: wrong update region win.c:2695: Test failed: wrong update region win.c:2704: Test failed: wrong update region win.c:2713: Test failed: wrong update region win.c:2728: Test failed: wrong update region make[3]: *** [win.ok] Error 12 make[3]: Leaving directory `/home/sun/sources/wine/dlls/user/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/user' make[1]: *** [user/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2
make[3]: Entering directory `/home/sun/sources/wine/dlls/winmm/tests' ../../../tools/runtest -q -P wine -M winmm.dll -T ../../.. -p winmm_test.exe.so wave.c && touch wave.ok wave.c:594: Test failed: The sound played for 1169 ms instead of 1000 ms make[3]: *** [wave.ok] Error 1 make[3]: Leaving directory `/home/sun/sources/wine/dlls/winmm/tests' make[2]: *** [tests/__test__] Error 2 make[2]: Leaving directory `/home/sun/sources/wine/dlls/winmm' make[1]: *** [winmm/__test__] Error 2 make[1]: Leaving directory `/home/sun/sources/wine/dlls' make: *** [dlls/__test__] Error 2