diff options
-rw-r--r-- | Alc/ALc.c | 38 | ||||
-rw-r--r-- | OpenAL32/Include/alMain.h | 4 |
2 files changed, 42 insertions, 0 deletions
@@ -162,6 +162,8 @@ static const ALCfunction alcFunctions[] = { DECL(alcGetInteger64vSOFT), + DECL(alcResetDeviceSOFT), + DECL(alEnable), DECL(alDisable), DECL(alIsEnabled), @@ -3289,6 +3291,42 @@ ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *Context) } +/* alcResetDeviceSOFT + * + * Resets the given device output, using the specified attribute list. + */ +ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCint *attribs) +{ + ALCenum err; + + LockLists(); + if(!(device=VerifyDevice(device)) || device->Type == Capture || !device->Connected) + { + UnlockLists(); + alcSetError(device, ALC_INVALID_DEVICE); + if(device) ALCdevice_DecRef(device); + return ALC_FALSE; + } + + if((err=UpdateDeviceParams(device, attribs)) != ALC_NO_ERROR) + { + UnlockLists(); + alcSetError(device, err); + if(err == ALC_INVALID_DEVICE) + { + V0(device->Backend,lock)(); + aluHandleDisconnect(device); + V0(device->Backend,unlock)(); + } + ALCdevice_DecRef(device); + return ALC_FALSE; + } + UnlockLists(); + ALCdevice_DecRef(device); + + return ALC_TRUE; +} + /* alcOpenDevice * * Opens the named device. diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 2b590979..71da2456 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -49,6 +49,10 @@ #define ALC_HRTF_REQUIRED_SOFT 0x0003 #define ALC_HRTF_HEADPHONES_DETECTED_SOFT 0x0004 #define ALC_HRTF_UNSUPPORTED_FORMAT_SOFT 0x0005 +typedef ALCboolean (ALC_APIENTRY*LPALCRESETDEVICESOFT)(ALCdevice *device, const ALCint *attribs); +#ifdef AL_ALEXT_PROTOTYPES +ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCint *attribs); +#endif #endif #ifndef ALC_SOFT_midi_interface |