dsound: Restore old speaker config after tests.
According to the documentation, only audio device vendors are allowed to call this function, so make sure we properly restore the old speaker config.
This commit is contained in:
parent
0b8ae46836
commit
b0cfbe81fa
|
@ -55,7 +55,7 @@ static void IDirectSound_test(LPDIRECTSOUND dso, BOOL initialized,
|
|||
IUnknown * unknown;
|
||||
IDirectSound * ds;
|
||||
IDirectSound8 * ds8;
|
||||
DWORD speaker_config, new_speaker_config;
|
||||
DWORD speaker_config, new_speaker_config, ref_speaker_config;
|
||||
|
||||
/* Try to Query for objects */
|
||||
rc=IDirectSound_QueryInterface(dso,&IID_IUnknown,(LPVOID*)&unknown);
|
||||
|
@ -144,11 +144,17 @@ static void IDirectSound_test(LPDIRECTSOUND dso, BOOL initialized,
|
|||
|
||||
rc=IDirectSound_GetSpeakerConfig(dso,&speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound_GetSpeakerConfig() failed: %08x\n", rc);
|
||||
ref_speaker_config = speaker_config;
|
||||
|
||||
speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO,
|
||||
DSSPEAKER_GEOMETRY_WIDE);
|
||||
rc=IDirectSound_SetSpeakerConfig(dso,speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound_SetSpeakerConfig() failed: %08x\n", rc);
|
||||
if (speaker_config == ref_speaker_config)
|
||||
speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO,
|
||||
DSSPEAKER_GEOMETRY_NARROW);
|
||||
if(rc==DS_OK) {
|
||||
rc=IDirectSound_SetSpeakerConfig(dso,speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound_SetSpeakerConfig() failed: %08x\n", rc);
|
||||
}
|
||||
if (rc==DS_OK) {
|
||||
rc=IDirectSound_GetSpeakerConfig(dso,&new_speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound_GetSpeakerConfig() failed: %08x\n", rc);
|
||||
|
@ -156,6 +162,7 @@ static void IDirectSound_test(LPDIRECTSOUND dso, BOOL initialized,
|
|||
trace("IDirectSound_GetSpeakerConfig() failed to set speaker "
|
||||
"config: expected 0x%08x, got 0x%08x\n",
|
||||
speaker_config,new_speaker_config);
|
||||
IDirectSound_SetSpeakerConfig(dso,ref_speaker_config);
|
||||
}
|
||||
|
||||
EXIT:
|
||||
|
|
|
@ -54,7 +54,7 @@ static void IDirectSound8_test(LPDIRECTSOUND8 dso, BOOL initialized,
|
|||
IUnknown * unknown;
|
||||
IDirectSound * ds;
|
||||
IDirectSound8 * ds8;
|
||||
DWORD speaker_config, new_speaker_config;
|
||||
DWORD speaker_config, new_speaker_config, ref_speaker_config;
|
||||
DWORD certified;
|
||||
|
||||
/* Try to Query for objects */
|
||||
|
@ -148,11 +148,17 @@ static void IDirectSound8_test(LPDIRECTSOUND8 dso, BOOL initialized,
|
|||
|
||||
rc=IDirectSound8_GetSpeakerConfig(dso,&speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound8_GetSpeakerConfig() failed: %08x\n", rc);
|
||||
ref_speaker_config = speaker_config;
|
||||
|
||||
speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO,
|
||||
DSSPEAKER_GEOMETRY_WIDE);
|
||||
rc=IDirectSound8_SetSpeakerConfig(dso,speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound8_SetSpeakerConfig() failed: %08x\n", rc);
|
||||
if (speaker_config == ref_speaker_config)
|
||||
speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO,
|
||||
DSSPEAKER_GEOMETRY_NARROW);
|
||||
if(rc==DS_OK) {
|
||||
rc=IDirectSound8_SetSpeakerConfig(dso,speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound8_SetSpeakerConfig() failed: %08x\n", rc);
|
||||
}
|
||||
if (rc==DS_OK) {
|
||||
rc=IDirectSound8_GetSpeakerConfig(dso,&new_speaker_config);
|
||||
ok(rc==DS_OK,"IDirectSound8_GetSpeakerConfig() failed: %08x\n", rc);
|
||||
|
@ -160,6 +166,7 @@ static void IDirectSound8_test(LPDIRECTSOUND8 dso, BOOL initialized,
|
|||
trace("IDirectSound8_GetSpeakerConfig() failed to set speaker "
|
||||
"config: expected 0x%08x, got 0x%08x\n",
|
||||
speaker_config,new_speaker_config);
|
||||
IDirectSound8_SetSpeakerConfig(dso,ref_speaker_config);
|
||||
}
|
||||
|
||||
rc=IDirectSound8_VerifyCertification(dso, &certified);
|
||||
|
|
Loading…
Reference in New Issue