From: Anton Baskanov baskanov@gmail.com
--- dlls/dmsynth/tests/dmsynth.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/dlls/dmsynth/tests/dmsynth.c b/dlls/dmsynth/tests/dmsynth.c index ad9f706aada..1fb54d98dcf 100644 --- a/dlls/dmsynth/tests/dmsynth.c +++ b/dlls/dmsynth/tests/dmsynth.c @@ -399,6 +399,16 @@ static void test_dmsynth(void) params.dwSize = sizeof(DMUS_PORTPARAMS7); hr = IDirectMusicSynth_Open(dmsynth, ¶ms); ok(hr == S_OK, "Open failed: %#lx\n", hr); + todo_wine ok(params.dwSize == sizeof(DMUS_PORTPARAMS7), "dwSize: %ld\n", params.dwSize); + ok(params.dwValidParams == (all_params & ~DMUS_PORTPARAMS_FEATURES), "dwValidParams: %#lx\n", params.dwValidParams); + ok(params.dwVoices == 32, "dwVoices: %ld\n", params.dwVoices); + ok(params.dwChannelGroups == 2, "dwChannelGroups: %ld\n", params.dwChannelGroups); + ok(params.dwAudioChannels == 2, "dwAudioChannels: %ld\n", params.dwAudioChannels); + ok(params.dwSampleRate == 22050, "dwSampleRate: %ld\n", params.dwSampleRate); + ok(params.dwEffectFlags == DMUS_EFFECT_REVERB, "params.dwEffectFlags: %#lx\n", params.dwEffectFlags); + ok(params.fShare == FALSE, "fShare: %d\n", params.fShare); + ok(params.dwFeatures == 0, "dwFeatures: %#lx\n", params.dwFeatures); + test_synth_getformat(dmsynth, ¶ms, "defaults"); IDirectMusicSynth_Close(dmsynth); /* All params supported and set to 0 */ params.dwSize = sizeof(params);
From: Anton Baskanov baskanov@gmail.com
--- dlls/dmsynth/tests/dmsynth.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/dlls/dmsynth/tests/dmsynth.c b/dlls/dmsynth/tests/dmsynth.c index 1fb54d98dcf..8029c67c8a7 100644 --- a/dlls/dmsynth/tests/dmsynth.c +++ b/dlls/dmsynth/tests/dmsynth.c @@ -411,20 +411,21 @@ static void test_dmsynth(void) test_synth_getformat(dmsynth, ¶ms, "defaults"); IDirectMusicSynth_Close(dmsynth); /* All params supported and set to 0 */ + memset(¶ms, 0, sizeof(params)); params.dwSize = sizeof(params); params.dwValidParams = all_params; hr = IDirectMusicSynth_Open(dmsynth, ¶ms); - ok(hr == S_OK, "Open failed: %#lx\n", hr); + ok(hr == S_FALSE, "Open failed: %#lx\n", hr); ok(params.dwSize == sizeof(params), "dwSize: %ld\n", params.dwSize); ok(params.dwValidParams == all_params, "dwValidParams: %#lx\n", params.dwValidParams); - ok(params.dwVoices == 32, "dwVoices: %ld\n", params.dwVoices); - ok(params.dwChannelGroups == 2, "dwChannelGroups: %ld\n", params.dwChannelGroups); - ok(params.dwAudioChannels == 2, "dwAudioChannels: %ld\n", params.dwAudioChannels); - ok(params.dwSampleRate == 22050, "dwSampleRate: %ld\n", params.dwSampleRate); - ok(params.dwEffectFlags == DMUS_EFFECT_REVERB, "params.dwEffectFlags: %#lx\n", params.dwEffectFlags); + todo_wine ok(params.dwVoices == 1, "dwVoices: %ld\n", params.dwVoices); + todo_wine ok(params.dwChannelGroups == 1, "dwChannelGroups: %ld\n", params.dwChannelGroups); + todo_wine ok(params.dwAudioChannels == 1, "dwAudioChannels: %ld\n", params.dwAudioChannels); + todo_wine ok(params.dwSampleRate == 11025, "dwSampleRate: %ld\n", params.dwSampleRate); + todo_wine ok(params.dwEffectFlags == 0, "params.dwEffectFlags: %#lx\n", params.dwEffectFlags); ok(params.fShare == FALSE, "fShare: %d\n", params.fShare); ok(params.dwFeatures == 0, "dwFeatures: %#lx\n", params.dwFeatures); - test_synth_getformat(dmsynth, ¶ms, "defaults"); + test_synth_getformat(dmsynth, ¶ms, "zero"); IDirectMusicSynth_Close(dmsynth); /* Requesting more than supported */ params.dwValidParams = DMUS_PORTPARAMS_SAMPLERATE;
From: Anton Baskanov baskanov@gmail.com
--- dlls/dmsynth/synth.c | 14 +++++++------- dlls/dmsynth/tests/dmsynth.c | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c index ecf1dead8a8..b94c4479f18 100644 --- a/dlls/dmsynth/synth.c +++ b/dlls/dmsynth/synth.c @@ -532,26 +532,26 @@ static HRESULT WINAPI synth_Open(IDirectMusicSynth8 *iface, DMUS_PORTPARAMS *par
if (size > params->dwSize) size = params->dwSize;
- if ((params->dwValidParams & DMUS_PORTPARAMS_VOICES) && params->dwVoices) + if (params->dwValidParams & DMUS_PORTPARAMS_VOICES) { - actual.dwVoices = min(params->dwVoices, This->caps.dwMaxVoices); + actual.dwVoices = min(max(params->dwVoices, 1), This->caps.dwMaxVoices); modified |= actual.dwVoices != params->dwVoices; }
- if ((params->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS) && params->dwChannelGroups) + if (params->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS) { - actual.dwChannelGroups = min(params->dwChannelGroups, This->caps.dwMaxChannelGroups); + actual.dwChannelGroups = min(max(params->dwChannelGroups, 1), This->caps.dwMaxChannelGroups); modified |= actual.dwChannelGroups != params->dwChannelGroups; }
- if ((params->dwValidParams & DMUS_PORTPARAMS_AUDIOCHANNELS) && params->dwAudioChannels) + if (params->dwValidParams & DMUS_PORTPARAMS_AUDIOCHANNELS) { /* FluidSynth only works with stereo */ actual.dwAudioChannels = 2; modified |= actual.dwAudioChannels != params->dwAudioChannels; }
- if ((params->dwValidParams & DMUS_PORTPARAMS_SAMPLERATE) && params->dwSampleRate) + if (params->dwValidParams & DMUS_PORTPARAMS_SAMPLERATE) { actual.dwSampleRate = min(max(params->dwSampleRate, 11025), 96000); modified |= actual.dwSampleRate != params->dwSampleRate; @@ -571,7 +571,7 @@ static HRESULT WINAPI synth_Open(IDirectMusicSynth8 *iface, DMUS_PORTPARAMS *par
if (params->dwSize < sizeof(*params)) actual.dwValidParams &= ~DMUS_PORTPARAMS_FEATURES; - else if ((params->dwValidParams & DMUS_PORTPARAMS_FEATURES) && params->dwFeatures) + else if (params->dwValidParams & DMUS_PORTPARAMS_FEATURES) { actual.dwFeatures = params->dwFeatures & (DMUS_PORT_FEATURE_AUDIOPATH | DMUS_PORT_FEATURE_STREAMING); modified |= actual.dwFeatures != params->dwFeatures; diff --git a/dlls/dmsynth/tests/dmsynth.c b/dlls/dmsynth/tests/dmsynth.c index 8029c67c8a7..5f875868171 100644 --- a/dlls/dmsynth/tests/dmsynth.c +++ b/dlls/dmsynth/tests/dmsynth.c @@ -418,10 +418,10 @@ static void test_dmsynth(void) ok(hr == S_FALSE, "Open failed: %#lx\n", hr); ok(params.dwSize == sizeof(params), "dwSize: %ld\n", params.dwSize); ok(params.dwValidParams == all_params, "dwValidParams: %#lx\n", params.dwValidParams); - todo_wine ok(params.dwVoices == 1, "dwVoices: %ld\n", params.dwVoices); - todo_wine ok(params.dwChannelGroups == 1, "dwChannelGroups: %ld\n", params.dwChannelGroups); + ok(params.dwVoices == 1, "dwVoices: %ld\n", params.dwVoices); + ok(params.dwChannelGroups == 1, "dwChannelGroups: %ld\n", params.dwChannelGroups); todo_wine ok(params.dwAudioChannels == 1, "dwAudioChannels: %ld\n", params.dwAudioChannels); - todo_wine ok(params.dwSampleRate == 11025, "dwSampleRate: %ld\n", params.dwSampleRate); + ok(params.dwSampleRate == 11025, "dwSampleRate: %ld\n", params.dwSampleRate); todo_wine ok(params.dwEffectFlags == 0, "params.dwEffectFlags: %#lx\n", params.dwEffectFlags); ok(params.fShare == FALSE, "fShare: %d\n", params.fShare); ok(params.dwFeatures == 0, "dwFeatures: %#lx\n", params.dwFeatures);
From: Anton Baskanov baskanov@gmail.com
--- dlls/dmsynth/synth.c | 3 ++- dlls/dmsynth/tests/dmsynth.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c index b94c4479f18..57a057b68b0 100644 --- a/dlls/dmsynth/synth.c +++ b/dlls/dmsynth/synth.c @@ -559,7 +559,8 @@ static HRESULT WINAPI synth_Open(IDirectMusicSynth8 *iface, DMUS_PORTPARAMS *par
if (params->dwValidParams & DMUS_PORTPARAMS_EFFECTS) { - actual.dwEffectFlags = DMUS_EFFECT_REVERB; + actual.dwEffectFlags = params->dwEffectFlags + & (DMUS_EFFECT_REVERB | DMUS_EFFECT_CHORUS | DMUS_EFFECT_DELAY); modified |= actual.dwEffectFlags != params->dwEffectFlags; }
diff --git a/dlls/dmsynth/tests/dmsynth.c b/dlls/dmsynth/tests/dmsynth.c index 5f875868171..a30c295c052 100644 --- a/dlls/dmsynth/tests/dmsynth.c +++ b/dlls/dmsynth/tests/dmsynth.c @@ -422,7 +422,7 @@ static void test_dmsynth(void) ok(params.dwChannelGroups == 1, "dwChannelGroups: %ld\n", params.dwChannelGroups); todo_wine ok(params.dwAudioChannels == 1, "dwAudioChannels: %ld\n", params.dwAudioChannels); ok(params.dwSampleRate == 11025, "dwSampleRate: %ld\n", params.dwSampleRate); - todo_wine ok(params.dwEffectFlags == 0, "params.dwEffectFlags: %#lx\n", params.dwEffectFlags); + ok(params.dwEffectFlags == 0, "params.dwEffectFlags: %#lx\n", params.dwEffectFlags); ok(params.fShare == FALSE, "fShare: %d\n", params.fShare); ok(params.dwFeatures == 0, "dwFeatures: %#lx\n", params.dwFeatures); test_synth_getformat(dmsynth, ¶ms, "zero");
Looks good.
Do you have a game / application that tripped over the DMUS_EFFECT_REVERB?\ Pure interest as it seems I had botched the test that ended up forcing the DMUS_EFFECT_REVERB on.
This merge request was approved by Michael Stefaniuc.