misc/libopenalbridge/commands.c
changeset 9373 b769a8e38cbd
parent 9372 915436ff64ab
child 9374 60063430445b
--- a/misc/libopenalbridge/commands.c	Thu Jul 25 23:20:06 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
- *  commands.c
- *  Hedgewars
- *
- *  Created by Vittorio on 13/06/10.
- *  Copyright 2010 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "commands.h"
-#include "wrappers.h"
-
-ALfloat old_gain;
-extern ALuint *Sources;
-extern ALuint cache_size, cache_index, sources_number;
-extern ALboolean instances_number;
-extern al_sound_t *the_sounds;
-
-void openal_pausesound (uint32_t index) {
-    if (openal_ready() == AL_TRUE && index < cache_size)
-        alSourcePause(Sources[the_sounds[index].source_index]);
-}
-
-
-void openal_stopsound (uint32_t index) {
-    if (openal_ready() == AL_TRUE && index < cache_size)
-        alSourceStop(Sources[the_sounds[index].source_index]);
-}
-
-
-void openal_playsound (unsigned int index) {
-    ALboolean needsSource = AL_TRUE;
-    ALfloat SourcePosition[] = { 0.0, 0.0, 0.0 };
-    ALfloat SourceVelocity[] = { 0.0, 0.0, 0.0 };
-    ALint state;
-    int i, j;
-
-    if (openal_ready() == AL_TRUE && index < cache_size) {
-        // check if sound has already a source
-        if (the_sounds[index].source_index != -1) {
-            // it has a source, check it's not playing
-            alGetSourcei(Sources[the_sounds[index].source_index], AL_SOURCE_STATE, &state);
-            if (state != AL_PLAYING && state != AL_PAUSED) {
-                // it is not being played, so we can use it safely
-	            needsSource = AL_FALSE;
-            }
-            // else it is being played, so we have to allocate a new source for this buffer
-        }
-
-        if (needsSource) {
-#ifdef DEBUG
-            fprintf(stderr,"(Bridge Debug) - looking for a source for sound %d\n", index);
-#endif
-            for (i = 0; i < sources_number; i++) {
-                // let's iterate on Sources until we find a source that is not playing
-                alGetSourcei(Sources[i], AL_SOURCE_STATE, &state);
-                if (state != AL_PLAYING && state != AL_PAUSED) {
-                    // let's iterate on the_sounds until we find the sound using that source
-                    for (j = 0; j < cache_size; j++) {
-                        if (the_sounds[j].source_index == i) {
-                            the_sounds[j].source_index = -1;
-                            break;
-                        }
-                    }
-                    // here we know that no-one is using that source so we can use it
-                    break;
-                }
-            }
-
-            if (i == sources_number) {
-                // this means all sources are busy
-            }
-
-            // set source properties that it will use when it's in playback
-            alSourcei (Sources[i], AL_BUFFER,   the_sounds[index].buffer);
-            alSourcef (Sources[i], AL_PITCH,    1.0f);
-            alSourcef (Sources[i], AL_GAIN,     1.0f);
-            alSourcefv(Sources[i], AL_POSITION, SourcePosition);
-            alSourcefv(Sources[i], AL_VELOCITY, SourceVelocity);
-            alSourcei (Sources[i], AL_LOOPING,  0);
-
-            if (AL_NO_ERROR != alGetError()) {
-                fprintf(stderr,"(Bridge ERROR) - failed to set Source properties\n");
-                return;
-            }
-            the_sounds[index].source_index = i;
-        }
-
-        alSourcePlay(Sources[the_sounds[index].source_index]);
-
-        if (AL_NO_ERROR != alGetError()) {
-            fprintf(stderr,"(Bridge Warning) - failed to play sound %d\n", index);
-            return;
-        }
-    }
-}
-
-void openal_toggleloop (uint32_t index) {
-    ALint loop;
-
-    if (openal_ready() == AL_TRUE && index < cache_size) {
-        alGetSourcei (Sources[the_sounds[index].source_index], AL_LOOPING, &loop);
-        alSourcei (Sources[the_sounds[index].source_index], AL_LOOPING, !((uint8_t) loop) & 0x00000001);
-    }
-}
-
-
-void openal_setvolume (uint32_t index, float gain) {
-    if (openal_ready() == AL_TRUE && index < cache_size)
-        alSourcef (Sources[the_sounds[index].source_index], AL_GAIN, gain);
-}
-
-
-void openal_setglobalvolume (float gain) {
-    if (openal_ready() == AL_TRUE)
-        alListenerf (AL_GAIN, gain);
-}
-
-void openal_togglemute () {
-    ALfloat gain;
-
-    if (openal_ready() == AL_TRUE) {
-        alGetListenerf (AL_GAIN, &gain);
-        if (gain > 0) {
-            old_gain = gain;
-            gain = 0;
-        } else
-            gain = old_gain;
-
-        alListenerf (AL_GAIN, gain);
-    }
-}
-
-// Fade in or out by calling a helper thread
-void openal_fade (uint32_t index, uint16_t quantity, al_fade_t direction) {
-#ifndef _WIN32
-    pthread_t thread;
-#else
-    HANDLE Thread;
-#endif
-    fade_t *fade;
-
-    if (openal_ready() == AL_TRUE && index < cache_size) {
-        fade = (fade_t*) Malloc(sizeof(fade_t));
-        fade->index = index;
-        fade->quantity = quantity;
-        fade->type = direction;
-
-#ifndef _WIN32
-        pthread_create(&thread, NULL, (void *)helper_fade, (void *)fade);
-        pthread_detach(thread);
-#else
-        Thread = (HANDLE) _beginthread((void *)helper_fade, 0, (void *)fade);
-#endif
-    }
-}
-
-void openal_setposition (uint32_t index, float x, float y, float z) {
-    if (openal_ready() == AL_TRUE && index < cache_size)
-        alSource3f(Sources[the_sounds[index].source_index], AL_POSITION, x, y, z);;
-}
-
-void helper_fade(void *tmp) {
-    ALfloat gain;
-    ALfloat target_gain;
-    fade_t *fade;
-    uint32_t index;
-    uint16_t quantity;
-    al_fade_t type;
-
-    fade = tmp;
-    index = fade->index;
-    quantity = fade->quantity;
-    type = fade->type;
-    free (fade);
-
-    if (type == AL_FADE_IN) {
-#ifdef DEBUG
-        fprintf(stderr,"(Bridge Info) - Fade-in in progress [index %d quantity %d]", index, quantity);
-#endif
-
-        // save the volume desired after the fade
-        alGetSourcef(Sources[the_sounds[index].source_index], AL_GAIN, &target_gain);
-        if (target_gain > 1.0f || target_gain <= 0.0f)
-            target_gain = 1.0f;
-
-        for (gain = 0.0f ; gain <= target_gain; gain += (float) quantity/10000) {
-#ifdef TRACE
-            fprintf(stderr,"(Bridge Debug) - Fade-in set gain to %f\n", gain);
-#endif
-            alSourcef(Sources[the_sounds[index].source_index], AL_GAIN, gain);
-            usleep(10000);
-        }
-    } else {
-        alGetSourcef(Sources[the_sounds[index].source_index], AL_GAIN, &target_gain);
-
-        for (gain = target_gain; gain >= 0.00f; gain -= (float) quantity/10000) {
-#ifdef TRACE
-            fprintf(stderr,"(Bridge Debug) - Fade-out set gain to %f\n", gain);
-#endif
-            alSourcef(Sources[the_sounds[index].source_index], AL_GAIN, gain);
-            usleep(10000);
-        }
-
-        if (AL_NO_ERROR != alGetError())
-            fprintf(stderr,"(Bridge Warning) - Failed to set fade-out effect\n");
-
-        // stop that sound and reset its volume
-        alSourceStop (Sources[the_sounds[index].source_index]);
-        alSourcef (Sources[the_sounds[index].source_index], AL_GAIN, target_gain);
-    }
-
-    if (AL_NO_ERROR != alGetError())
-        fprintf(stderr,"(Bridge Warning) - Failed to set fade effect\n");
-
-#ifndef _WIN32
-    pthread_exit(NULL);
-#else
-    _endthread();
-#endif
-}
-