diff options
author | Chris Robinson <[email protected]> | 2014-01-02 09:06:28 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-01-02 09:06:28 -0800 |
commit | e74e3e2b2390a624178f9ee67e8ba89b70d74229 (patch) | |
tree | 0095e406bf2743a53bf394ba49d080a53091cbf1 /OpenAL32/alSoundfont.c | |
parent | 7d94e9c52fc7023e7ef7ca036de02b6131ecc376 (diff) |
Move alLoadSoundfontSOFT to alSoundfont.c
Diffstat (limited to 'OpenAL32/alSoundfont.c')
-rw-r--r-- | OpenAL32/alSoundfont.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/OpenAL32/alSoundfont.c b/OpenAL32/alSoundfont.c index 4bc4da48..8173526b 100644 --- a/OpenAL32/alSoundfont.c +++ b/OpenAL32/alSoundfont.c @@ -308,6 +308,48 @@ done: } +AL_API void AL_APIENTRY alLoadSoundfontSOFT(ALuint id, size_t(*cb)(ALvoid*,size_t,ALvoid*), ALvoid *user) +{ + ALCdevice *device; + ALCcontext *context; + ALsoundfont *sfont; + Reader reader; + + context = GetContextRef(); + if(!context) return; + + device = context->Device; + if(!(sfont=LookupSfont(device, id))) + SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done); + + WriteLock(&sfont->Lock); + if(sfont->ref != 0) + { + WriteUnlock(&sfont->Lock); + SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done); + } + if(sfont->Mapped) + { + WriteUnlock(&sfont->Lock); + SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done); + } + if(sfont->NumPresets > 0) + { + WriteUnlock(&sfont->Lock); + SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done); + } + + reader.cb = cb; + reader.ptr = user; + reader.error = 0; + loadSf2(&reader, sfont, context); + WriteUnlock(&sfont->Lock); + +done: + ALCcontext_DecRef(context); +} + + /* ReleaseALSoundfonts * * Called to destroy any soundfonts that still exist on the device |