aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2013-12-29 00:34:58 -0800
committerChris Robinson <[email protected]>2013-12-29 00:34:58 -0800
commit09665715ed0c0897834279dcc3f15c24ed01ec2d (patch)
tree9267920477144a2c332486846355c8ceeb4ce27f /OpenAL32
parent0d7996409ea300eab47fff096c2d3c5aea592a29 (diff)
Add support for the fontsound loop mode
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alMain.h3
-rw-r--r--OpenAL32/Include/alMidi.h1
-rw-r--r--OpenAL32/alFontsound.c12
3 files changed, 16 insertions, 0 deletions
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index 7b1b92dd..0cc06df3 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -50,6 +50,9 @@
#define AL_FONTSOUND_LINK_SOFT 0x2008
#define AL_KEY_RANGE_SOFT 0x002B
#define AL_VELOCITY_RANGE_SOFT 0x002C
+#define AL_LOOP_MODE_SOFT 0x0036
+#define AL_LOOP_CONTINUOUS_SOFT 0x0001
+#define AL_LOOP_UNTIL_RELEASE_SOFT 0x0003
#define AL_FORMAT_TYPE_SOFT 0x1991
#define AL_NOTEOFF_SOFT 0x0080
#define AL_NOTEON_SOFT 0x0090
diff --git a/OpenAL32/Include/alMidi.h b/OpenAL32/Include/alMidi.h
index acbc81b5..44d05c1a 100644
--- a/OpenAL32/Include/alMidi.h
+++ b/OpenAL32/Include/alMidi.h
@@ -28,6 +28,7 @@ typedef struct ALfontsound {
ALuint LoopStart;
ALuint LoopEnd;
ALuint SampleRate;
+ ALenum LoopMode;
ALubyte PitchKey;
ALbyte PitchCorrection;
ALenum SampleType;
diff --git a/OpenAL32/alFontsound.c b/OpenAL32/alFontsound.c
index 663b1290..36f34570 100644
--- a/OpenAL32/alFontsound.c
+++ b/OpenAL32/alFontsound.c
@@ -152,6 +152,13 @@ AL_API void AL_APIENTRY alFontsoundiSOFT(ALuint id, ALenum param, ALint value)
sound->SampleRate = value;
break;
+ case AL_LOOP_MODE_SOFT:
+ if(!(value == AL_NONE || value == AL_LOOP_CONTINUOUS_SOFT ||
+ value == AL_LOOP_UNTIL_RELEASE_SOFT))
+ SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
+ sound->LoopMode = value;
+ break;
+
case AL_BASE_KEY_SOFT:
if(!((value >= 0 && value <= 127) || value == 255))
SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
@@ -248,6 +255,7 @@ AL_API void AL_APIENTRY alFontsoundivSOFT(ALuint id, ALenum param, const ALint *
case AL_SAMPLE_LOOP_START_SOFT:
case AL_SAMPLE_LOOP_END_SOFT:
case AL_SAMPLE_RATE_SOFT:
+ case AL_LOOP_MODE_SOFT:
case AL_BASE_KEY_SOFT:
case AL_KEY_CORRECTION_SOFT:
case AL_SAMPLE_TYPE_SOFT:
@@ -318,6 +326,10 @@ AL_API void AL_APIENTRY alGetFontsoundivSOFT(ALuint id, ALenum param, ALint *val
values[0] = sound->SampleRate;
break;
+ case AL_LOOP_MODE_SOFT:
+ values[0] = sound->LoopMode;
+ break;
+
case AL_BASE_KEY_SOFT:
values[0] = sound->PitchKey;
break;