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:
Maarten Lankhorst 2009-11-20 10:11:42 +01:00 committed by Alexandre Julliard
parent 0b8ae46836
commit b0cfbe81fa
2 changed files with 20 additions and 6 deletions

View File

@ -55,7 +55,7 @@ static void IDirectSound_test(LPDIRECTSOUND dso, BOOL initialized,
IUnknown * unknown; IUnknown * unknown;
IDirectSound * ds; IDirectSound * ds;
IDirectSound8 * ds8; IDirectSound8 * ds8;
DWORD speaker_config, new_speaker_config; DWORD speaker_config, new_speaker_config, ref_speaker_config;
/* Try to Query for objects */ /* Try to Query for objects */
rc=IDirectSound_QueryInterface(dso,&IID_IUnknown,(LPVOID*)&unknown); 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); rc=IDirectSound_GetSpeakerConfig(dso,&speaker_config);
ok(rc==DS_OK,"IDirectSound_GetSpeakerConfig() failed: %08x\n", rc); ok(rc==DS_OK,"IDirectSound_GetSpeakerConfig() failed: %08x\n", rc);
ref_speaker_config = speaker_config;
speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO, speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO,
DSSPEAKER_GEOMETRY_WIDE); DSSPEAKER_GEOMETRY_WIDE);
rc=IDirectSound_SetSpeakerConfig(dso,speaker_config); if (speaker_config == ref_speaker_config)
ok(rc==DS_OK,"IDirectSound_SetSpeakerConfig() failed: %08x\n", rc); 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) { if (rc==DS_OK) {
rc=IDirectSound_GetSpeakerConfig(dso,&new_speaker_config); rc=IDirectSound_GetSpeakerConfig(dso,&new_speaker_config);
ok(rc==DS_OK,"IDirectSound_GetSpeakerConfig() failed: %08x\n", rc); 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 " trace("IDirectSound_GetSpeakerConfig() failed to set speaker "
"config: expected 0x%08x, got 0x%08x\n", "config: expected 0x%08x, got 0x%08x\n",
speaker_config,new_speaker_config); speaker_config,new_speaker_config);
IDirectSound_SetSpeakerConfig(dso,ref_speaker_config);
} }
EXIT: EXIT:

View File

@ -54,7 +54,7 @@ static void IDirectSound8_test(LPDIRECTSOUND8 dso, BOOL initialized,
IUnknown * unknown; IUnknown * unknown;
IDirectSound * ds; IDirectSound * ds;
IDirectSound8 * ds8; IDirectSound8 * ds8;
DWORD speaker_config, new_speaker_config; DWORD speaker_config, new_speaker_config, ref_speaker_config;
DWORD certified; DWORD certified;
/* Try to Query for objects */ /* Try to Query for objects */
@ -148,11 +148,17 @@ static void IDirectSound8_test(LPDIRECTSOUND8 dso, BOOL initialized,
rc=IDirectSound8_GetSpeakerConfig(dso,&speaker_config); rc=IDirectSound8_GetSpeakerConfig(dso,&speaker_config);
ok(rc==DS_OK,"IDirectSound8_GetSpeakerConfig() failed: %08x\n", rc); ok(rc==DS_OK,"IDirectSound8_GetSpeakerConfig() failed: %08x\n", rc);
ref_speaker_config = speaker_config;
speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO, speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO,
DSSPEAKER_GEOMETRY_WIDE); DSSPEAKER_GEOMETRY_WIDE);
rc=IDirectSound8_SetSpeakerConfig(dso,speaker_config); if (speaker_config == ref_speaker_config)
ok(rc==DS_OK,"IDirectSound8_SetSpeakerConfig() failed: %08x\n", rc); 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) { if (rc==DS_OK) {
rc=IDirectSound8_GetSpeakerConfig(dso,&new_speaker_config); rc=IDirectSound8_GetSpeakerConfig(dso,&new_speaker_config);
ok(rc==DS_OK,"IDirectSound8_GetSpeakerConfig() failed: %08x\n", rc); 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 " trace("IDirectSound8_GetSpeakerConfig() failed to set speaker "
"config: expected 0x%08x, got 0x%08x\n", "config: expected 0x%08x, got 0x%08x\n",
speaker_config,new_speaker_config); speaker_config,new_speaker_config);
IDirectSound8_SetSpeakerConfig(dso,ref_speaker_config);
} }
rc=IDirectSound8_VerifyCertification(dso, &certified); rc=IDirectSound8_VerifyCertification(dso, &certified);