![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/share/emscripten/tests/freealut/src/ |
Upload File : |
#include "alutInternal.h" static enum { Unintialized, /* ALUT has not been initialized yet or has been de-initialised */ ALUTDeviceAndContext, /* alutInit has been called successfully */ ExternalDeviceAndContext /* alutInitWithoutContext has been called */ } initialisationState = Unintialized; /* * Note: alutContext contains something valid only when initialisationState * contains ALUTDeviceAndContext. */ static ALCcontext *alutContext; ALboolean _alutSanityCheck(void) { ALCcontext *context; if (initialisationState == Unintialized) { _alutSetError(ALUT_ERROR_INVALID_OPERATION); return AL_FALSE; } context = alcGetCurrentContext(); if (context == NULL) { _alutSetError(ALUT_ERROR_NO_CURRENT_CONTEXT); return AL_FALSE; } if (alGetError() != AL_NO_ERROR) { _alutSetError(ALUT_ERROR_AL_ERROR_ON_ENTRY); return AL_FALSE; } if (alcGetError(alcGetContextsDevice(context)) != ALC_NO_ERROR) { _alutSetError(ALUT_ERROR_ALC_ERROR_ON_ENTRY); return AL_FALSE; } return AL_TRUE; } ALboolean alutInit(int *argcp, char **argv) { ALCdevice *device; ALCcontext *context; if (initialisationState != Unintialized) { _alutSetError(ALUT_ERROR_INVALID_OPERATION); return AL_FALSE; } if ((argcp == NULL) != (argv == NULL)) { _alutSetError(ALUT_ERROR_INVALID_VALUE); return AL_FALSE; } device = alcOpenDevice(NULL); if (device == NULL) { _alutSetError(ALUT_ERROR_OPEN_DEVICE); return AL_FALSE; } context = alcCreateContext(device, NULL); if (context == NULL) { alcCloseDevice(device); _alutSetError(ALUT_ERROR_CREATE_CONTEXT); return AL_FALSE; } if (!alcMakeContextCurrent(context)) { alcDestroyContext(context); alcCloseDevice(device); _alutSetError(ALUT_ERROR_MAKE_CONTEXT_CURRENT); return AL_FALSE; } initialisationState = ALUTDeviceAndContext; alutContext = context; return AL_TRUE; } ALboolean alutInitWithoutContext(int *argcp, char **argv) { if (initialisationState != Unintialized) { _alutSetError(ALUT_ERROR_INVALID_OPERATION); return AL_FALSE; } if ((argcp == NULL) != (argv == NULL)) { _alutSetError(ALUT_ERROR_INVALID_VALUE); return AL_FALSE; } initialisationState = ExternalDeviceAndContext; return AL_TRUE; } ALboolean alutExit(void) { ALCdevice *device; if (initialisationState == Unintialized) { _alutSetError(ALUT_ERROR_INVALID_OPERATION); return AL_FALSE; } if (initialisationState == ExternalDeviceAndContext) { initialisationState = Unintialized; return AL_TRUE; } if (!_alutSanityCheck()) { return AL_FALSE; } if (!alcMakeContextCurrent(NULL)) { _alutSetError(ALUT_ERROR_MAKE_CONTEXT_CURRENT); return AL_FALSE; } device = alcGetContextsDevice(alutContext); alcDestroyContext(alutContext); if (alcGetError(device) != ALC_NO_ERROR) { _alutSetError(ALUT_ERROR_DESTROY_CONTEXT); return AL_FALSE; } if (!alcCloseDevice(device)) { _alutSetError(ALUT_ERROR_CLOSE_DEVICE); return AL_FALSE; } initialisationState = Unintialized; return AL_TRUE; }