/* * _alGetDoublev( ALenum param, ALdouble *dv ) * * Non locking version of alGetDoublev * */ void _alGetDoublev(ALenum param, ALdouble *dv) { AL_context *cc; cc = _alcDCGetContext(); if( cc == NULL ) { /* no current context, set error and return */ _alcSetError( ALC_INVALID_CONTEXT ); return; } switch( param ) { case AL_DOPPLER_FACTOR: *dv = cc->doppler_factor; break; case AL_DOPPLER_VELOCITY: *dv = cc->doppler_velocity; break; default: _alDCSetError( AL_ILLEGAL_ENUM ); break; } return; }
void alDistanceModel( ALenum distanceModel ) { AL_context *cc = _alcDCGetContext(); if( cc == NULL ) { _alDCSetError( AL_INVALID_OPERATION ); return; } _alcDCLockContext(); switch( distanceModel ) { case AL_NONE: case AL_INVERSE_DISTANCE: case AL_INVERSE_DISTANCE_CLAMPED: case AL_LINEAR_DISTANCE: case AL_LINEAR_DISTANCE_CLAMPED: case AL_EXPONENT_DISTANCE: case AL_EXPONENT_DISTANCE_CLAMPED: cc->distance_model = distanceModel; _alUpdateDistanceModel(cc); break; default: _alDCSetError( AL_INVALID_ENUM ); break; } _alcDCUnlockContext(); }
/* * alGetString( ALenum param ) * * Returns readable string representation of param, or NULL if no string * representation is available. */ const ALubyte *alGetString( ALenum param ) { AL_context *cc; static ALubyte extensions[4096]; /* * First, we check to see if the param corresponds to an * error, in which case we return the value from _alGetErrorString. */ if(_alIsError(param) == AL_TRUE) { return _alGetErrorString(param); } /* * Next, we check to see if the param corresponds to an alc * error, in which case we return the value from _alcGetErrorString. */ if( alcIsError( param ) == AL_TRUE ) { return _alcGetErrorString( param ); } switch(param) { case AL_VENDOR: return (const ALubyte *) "J. Valenzuela"; break; case AL_VERSION: return (const ALubyte *) LAL_VERSION; break; case AL_RENDERER: return (const ALubyte *) "Software"; break; case AL_EXTENSIONS: _alGetExtensionStrings( extensions, sizeof( extensions ) ); return extensions; break; case 0xfeedabee: return (const ALubyte *) "Mark 12:31"; break; default: break; } cc = _alcDCGetContext(); if( cc == NULL ) { /* no current context, set error and return */ _alcSetError( ALC_INVALID_CONTEXT ); return NULL; } else { _alDCSetError( AL_ILLEGAL_ENUM ); } return NULL; }
void alcSetAudioChannel_LOKI(ALuint channel, ALfloat volume) { AL_context *cc; _alcDCLockContext(); cc = _alcDCGetContext(); if(cc != NULL) { alcDeviceSetAudioChannel_( cc->write_device, channel, volume ); } _alcDCUnlockContext(); }
const ALchar* alGetString( ALenum param ) { const ALchar *value; static ALchar extensions[1024]; /* TODO: Ugly and not thread-safe! */ AL_context *cc = _alcDCGetContext(); if( cc == NULL ) { _alDCSetError( AL_INVALID_OPERATION ); return NULL; } _alcDCLockContext(); switch (param) { case AL_VERSION: value = "1.1"; break; case AL_RENDERER: value = "OpenAL Sample Implementation"; break; case AL_VENDOR: value = "OpenAL Community"; break; case AL_EXTENSIONS: _alGetExtensionStrings( extensions, sizeof( extensions ) ); value = extensions; break; case AL_NO_ERROR: value = "No Error"; break; case AL_INVALID_NAME: value = "Invalid Name"; break; case AL_INVALID_ENUM: value = "Invalid Enum"; break; case AL_INVALID_VALUE: value = "Invalid Value"; break; case AL_INVALID_OPERATION: value = "Invalid Operation"; break; case AL_OUT_OF_MEMORY: value = "Out of Memory"; break; default: value = NULL; _alDCSetError( AL_INVALID_ENUM ); break; } _alcDCUnlockContext(); return value; }
ALfloat alcGetAudioChannel_LOKI(ALuint channel) { AL_context *cc; ALfloat retval = 0.0f; _alcDCLockContext(); cc = _alcDCGetContext(); if(cc != NULL) { retval = alcDeviceGetAudioChannel_( cc->write_device, channel ); } _alcDCUnlockContext(); return retval; }
/* * _alIsEnabled( ALenum param ) * * Non locking version of alIsEnabled. * * assumes locked context */ ALboolean _alIsEnabled( ALenum param ) { AL_context *cc; cc = _alcDCGetContext(); if( cc == NULL ) { return AL_FALSE; } switch( param ) { default: _alDCSetError( AL_ILLEGAL_ENUM ); break; } return AL_FALSE; }
/* * _alDisable( ALenum param ) * * Disables the attribute specified by param. * * If param is not a valid attribute, AL_ILLEGAL_ENUM is set. * * assumes locked context */ void _alDisable( ALenum param ) { AL_context *cc; cc = _alcDCGetContext(); if(cc == NULL) { return; } switch( param ) { default: _alDCSetError( AL_ILLEGAL_ENUM ); break; } return; }
void alDisable( ALenum param ) { AL_context *cc = _alcDCGetContext(); if( cc == NULL ) { _alDCSetError( AL_INVALID_OPERATION ); return; } _alcDCLockContext(); switch (param) { default: _alDCSetError( AL_INVALID_ENUM ); break; } _alcDCUnlockContext(); }
ALboolean alIsEnabled( ALenum param ) { AL_context *cc = _alcDCGetContext(); if( cc == NULL ) { _alDCSetError( AL_INVALID_OPERATION ); return AL_FALSE; } _alcDCLockContext(); switch (param) { default: _alDCSetError( AL_INVALID_ENUM ); break; } _alcDCUnlockContext(); return AL_FALSE; }
void alSpeedOfSound( ALfloat value ) { AL_context *cc = _alcDCGetContext(); if( cc == NULL ) { _alDCSetError( AL_INVALID_OPERATION ); return; } _alcDCLockContext(); if( value <= 0.0f ) { _alDCSetError( AL_INVALID_VALUE ); _alcDCUnlockContext(); return; } cc->speed_of_sound = value; _alcDCUnlockContext(); }
void alDopplerVelocity( ALfloat value ) { AL_context *cc = _alcDCGetContext(); if( cc == NULL ) { _alDCSetError( AL_INVALID_OPERATION ); return; } _alcDCLockContext(); if( value <= 0.0f ) { _alDCSetError( AL_INVALID_VALUE ); _alcDCUnlockContext(); return; } cc->doppler_velocity = value; _alcDCUnlockContext(); }
/* * Assumes locked context. */ void _alPropagationSpeed(ALfloat value) { AL_context *cc; ALboolean inrange; inrange = _alCheckRangef(value, MIN_PROPAGATION_SPEED, MAX_PROPAGATION_SPEED); if(inrange == AL_FALSE) { _alDCSetError(AL_INVALID_VALUE); return; } cc = _alcDCGetContext(); if(cc == NULL) { return; } cc->propagation_speed = value; return; }
/* * _alGetIntegerv( ALenum param, ALint *iv ) * * Non locking version of alGetIntegerv */ void _alGetIntegerv(UNUSED(ALenum param), UNUSED(ALint *iv)) { AL_context *cc; cc = _alcDCGetContext(); if( cc == NULL ) { /* no current context, set error and return */ _alcSetError( ALC_INVALID_CONTEXT ); return; } switch( param ) { case AL_DISTANCE_MODEL: *iv = cc->distance_model; break; default: _alDCSetError( AL_ILLEGAL_ENUM ); break; } return; }
/* * alGetError( void ) * * Returns the most recent error generated in the AL state machine. */ ALenum alGetError( void ) { AL_context *cc; int index; _alcDCLockContext(); cc = _alcDCGetContext(); if(cc == NULL) return 0; index = index2ErrorNo(cc->alErrorIndex); /* * In deference to the new spec, GetError clears the error * after reading it. */ cc->alErrorIndex = 0; _alcDCUnlockContext(); return index; }