aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Alc/ALc.c12
-rw-r--r--OpenAL32/Include/alMain.h4
2 files changed, 11 insertions, 5 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index e807c408..b399b692 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -2658,12 +2658,18 @@ ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *pDevice)
*
* Open a loopback device, for manual rendering.
*/
-ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(void)
+ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(ALCdevice *device)
{
- ALCdevice *device;
-
DO_INITCONFIG();
+ /* Make sure the device, if specified, belongs to us. */
+ if(device && !(device=VerifyDevice(device)))
+ {
+ alcSetError(device, ALC_INVALID_DEVICE);
+ return NULL;
+ }
+ if(device) ALCdevice_DecRef(device);
+
device = calloc(1, sizeof(ALCdevice));
if(!device)
{
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index 3deaad56..22220dff 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -39,11 +39,11 @@
#define ALC_6POINT1_SOFT 0x1505 /* (WFX order) */
#define ALC_7POINT1_SOFT 0x1506 /* (WFX order) */
-typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(void);
+typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(ALCdevice*);
typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
#ifdef AL_ALEXT_PROTOTYPES
-ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(void);
+ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(ALCdevice *device);
ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
#endif