aboutsummaryrefslogtreecommitdiffstats
path: root/al/auxeffectslot.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Inline a couple dispatch callsChris Robinson2022-03-261-7/+0
|
* Avoid a stateful unique_ptr deleterChris Robinson2022-03-051-12/+3
|
* Simplify committing EAX propertiesChris Robinson2022-03-051-22/+6
| | | | | | Based on DirectSound's EAX behavior, committing any EAX property commits *all* deferred property changes, not just the object being changed. So applying EAX changes can be handled in one place.
* Ensure deferred EAX effect properties are committedChris Robinson2022-03-041-21/+37
|
* Avoid more unnecessary atomicsChris Robinson2022-02-131-12/+10
|
* Fix sign of ALeffectslot::eax_get_eax_default_lock's return typeChris Robinson2022-02-081-1/+1
|
* EAX various fixes (#657)Boris I. Bendovsky2022-02-081-47/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [EAX] Fix effect GUID validation Only NULL and REVERB was valid. * [EAX] Fix default FX slot flags EAX4 and EAX5 both sets to ENVIRONMENT. * [EAX] Set default values for legacy FX slots in the initialization * [EAX] Fix FX slot locking policy Fail on attempt to load an effect or change a lock for EAX4 "set" call. Unlock legacy FX slots on any EAX5 call. * [EAX] Allow DEFER flag for "get" calls. * [EAX] Make speaker configuration read-only * [EAX] Initialize speaker configuration * [EAX] Commit EAX source on a 3D source parameter call Reference: EAX 4.0 Programmer's Guide * [EAX] Commit EAX source on a 3D listener parameter call Reference: EAX 4.0 Programmer's Guide * [EAX] Commit source when it begins to play Reference: EAX 4.0 Programmer's Guide
* Avoid using ALeffect to manage EaxEffect objectsChris Robinson2022-02-071-42/+11
| | | | Effect slots can just use its EaxEffect directly.
* Don't pass an ALeffect to ALeffectslot::initEffectChris Robinson2022-02-071-10/+15
|
* Update the effectslot props with a function instead of a macroChris Robinson2022-02-061-27/+13
|
* Move ALSOFT_EAX definition to config.hChris Robinson2022-01-301-5/+3
| | | | And disable it by default for non-Windows targets
* Add EAX extensions (EAX 2.0-5.0, X-RAM) (#632)Boris I. Bendovsky2022-01-301-0/+834
| | | | | | | | | | | | | | | * Add EAX extensions (EAX 2.0-5.0, X-RAM) * Comment out C++17 leftovers * Remove everything related to patching * Update alsoftrc.sample * Rewrite integration * Fix GCC compilation under Linux * Always reset EAX effect properties when loading it into FX slot
* Make a construct_at method amd use itChris Robinson2021-10-081-1/+1
|
* Silence some static analysis warningsChris Robinson2021-10-031-0/+1
|
* Rename alcontext.h and move some functions to context.cppChris Robinson2021-04-271-1/+1
|
* Rename alcmain.h to device.hChris Robinson2021-04-271-1/+1
|
* Update include headersChris Robinson2021-04-271-4/+4
| | | | Don't add alc/ to the include paths.
* Create a base the ALCdevice and ALCcontext structsChris Robinson2021-04-241-4/+4
| | | | | A base that contains the API-agnostic data, with ALCdevice and ALCcontext being for AL-specific data.
* Force an effect slot update when implicitly startingChris Robinson2021-04-191-0/+4
|
* Don't flag the auxslot dirty when setting the current valueChris Robinson2021-04-191-0/+14
|
* Make an inverted atomic flag type and use itChris Robinson2021-04-151-5/+5
| | | | | | | | The inverted atomic flag replaces test_and_set+clear with test_and_clear+set, essentially inverting the flag status. This makes more logical sense for flagging dirty state, which is less confusing than flagging clean state. The one caveat is ATOMIC_FLAG_INIT (or default construction in C++20) initializes the state to true rather than false.
* Fix inverted check for updating deferred effectslot propertiesChris Robinson2021-04-131-1/+1
|
* Store buffer info in the queue entryChris Robinson2021-01-241-2/+9
|
* Make PopCount and CountTrailingZeros more standard-likeChris Robinson2021-01-221-4/+5
|
* Remove constexpr from a functionChris Robinson2021-01-171-6/+1
| | | | | Various versions of GCC have a problem with it, and it doesn't really add much benefit anyway.
* Move cpu_caps and fpu_ctrl to coreChris Robinson2020-12-311-1/+1
|
* Avoid ugly reinterpret_casts with offsetofChris Robinson2020-12-291-6/+12
|
* Combine multiple functions into oneChris Robinson2020-12-281-32/+22
|
* Return an intrusive_ptr from EffectStateFactory::createChris Robinson2020-12-281-2/+1
|
* Workaround a GCC 5 constexpr function bugChris Robinson2020-12-281-0/+5
|
* Move the WetBuffer reference to EffectSlotChris Robinson2020-12-271-3/+1
|
* Combine EffectState::deviceUpdate with setBufferChris Robinson2020-12-261-4/+2
|
* Avoid AL enums for the EffectSlot typeChris Robinson2020-12-261-8/+62
|
* Move alexcpt to coreChris Robinson2020-12-241-1/+1
|
* Move logging to coreChris Robinson2020-12-171-1/+1
|
* Make ALbuffer inherit from BufferStorageChris Robinson2020-11-211-3/+3
|
* Use an array of auxslot pointers instead of IDs to lookupChris Robinson2020-11-071-41/+59
|
* Use a separate structure for the active effect slot propertiesChris Robinson2020-11-071-36/+36
|
* Store the wet buffers in the contextChris Robinson2020-11-021-1/+3
| | | | | | This is rather ugly, but we need the wet buffers to remain allocated after its effect slot is deleted, because a voice can still use it for its final fade-out mix.
* Use inline functions for popcnt and ctz instead of macrosChris Robinson2020-10-131-3/+3
|
* Use a span instead of a pointer and count parametersChris Robinson2020-10-121-18/+15
|
* Cleanup and fix alAuxiliaryEffectSlotPlayv/StopvSOFTChris Robinson2020-09-051-20/+15
|
* Ensure effect slot properties are updated when playingChris Robinson2020-09-051-2/+15
|
* Rework effect slot buffer settingChris Robinson2020-09-051-15/+9
| | | | | | | | Rather than creating an effect-specific buffer that gets passed along as a property, the buffer is set the effect state when the effect state is created, the device is updated, or the buffer is changed. The buffer can only be set while the effect slot isn't playing, so it won't be changed or updated while the mixer is processing the effect state.
* Add methods to start and stop effect slot processingChris Robinson2020-09-051-2/+113
| | | | | | | | A newly-created effect slot is in an AL_INITIAL state, in which processing is stopped but will automatically become AL_PLAYING after successfully setting an AL_EFFECTSLOT_EFFECT value (including AL_EFFECT_NULL or 0). Calling Play[v] or Stop[v] will set the effect slot to AL_PLAYING or AL_STOPPED respectively. While stopped, the effect won't produce audio and will not be processed.
* Don't add effect slots to the active list until an effect is setChris Robinson2020-09-051-2/+5
|
* Pass a BufferStorage to EffectState::createBufferChris Robinson2020-08-281-6/+2
|
* Use a separate structure for buffer storageChris Robinson2020-08-281-5/+7
|
* Don't allow callback buffers for effect slotsChris Robinson2020-08-271-1/+5
|
* Store a reference to the effect buffer as an active propertyChris Robinson2020-08-241-3/+5
|