aboutsummaryrefslogtreecommitdiffstats
path: root/al/auxeffectslot.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Don't try to access null pointersChris Robinson2023-04-281-0/+3
|
* Simplify effect state buffer handling someChris Robinson2023-04-041-9/+2
|
* Don't set a default EAX version for fx slotsChris Robinson2023-03-111-1/+0
|
* Update the EAX version after setting fx slot propertiesChris Robinson2023-03-111-7/+10
|
* Don't commit EAX updates in applyAllUpdatesChris Robinson2023-03-111-4/+0
| | | | | | | | | | To avoid alcProcessContext causing deferred EAX properties to be committed. This simplifies updates when EAX has been initialized, but never or rarely used. Committing now always occurs in EAXSet when the property is non-deferred, updating the OpenAL object(s) with it (with OpenAL's updates then being applied based on the context's defer state).
* Convert the EAX Compressor effectChris Robinson2023-03-101-1/+1
| | | | And combine some type checks.
* Convert EAX chorus and flanger effectsChris Robinson2023-03-101-1/+1
|
* Rework EAX effect handlingChris Robinson2023-03-101-97/+45
| | | | | | | Allocate a base EaxEffect object once for all effect types, instead of reallocating different derived types on effect changes. The reverb and null effects have been converted to the new interface, the others are currently broken/unsupported, but will be restored shortly.
* Use macros for the likely/unlikely attributesChris Robinson2023-03-011-56/+56
| | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places.
* Avoid using a macro to set a context error and returnChris Robinson2022-12-241-21/+21
|
* Avoid using a macro to wrap standard attributesChris Robinson2022-12-061-56/+56
|
* Use standard likely/unlikely attributes when availableChris Robinson2022-12-051-56/+56
|
* AllocEffectSlot can't failChris Robinson2022-07-291-17/+3
|
* Use an intrusive_ptr to hold on to the EffectStateChris Robinson2022-07-291-5/+3
|
* Mark the EffectSlot in use after getting oneChris Robinson2022-07-261-0/+1
|
* [EAX_SOURCE] Fix source's occlusion and exclusion contributionBoris I. Bendovsky2022-07-171-2/+15
| | | | Source's oclussion and exclusion properties should be taken into account only for listener's environment (see p. 16, p. 56, pp. 62-63 and p. 64 of "EAX® 4.0 Programmer’s Guide").
* [EAX_FX_SLOT] Fix setting EAX5 flagsBoris I. Bendovsky2022-07-171-1/+1
|
* [EAX_FX_SLOT] Fix defaults for current propertiesBoris I. Bendovsky2022-07-171-14/+40
|
* [EAX_FX_SLOT] Fix EAXGet for EAX5Boris I. Bendovsky2022-07-171-1/+1
|
* Don't pass an EaxCall to initialize_fx_slotsChris Robinson2022-07-151-10/+2
|
* Allocate EffectSlots in clustersChris Robinson2022-07-151-4/+4
|
* Dynamically allocate EffectSlot objectsChris Robinson2022-07-151-9/+12
|
* Don't track dirty flags per EAX versionChris Robinson2022-07-131-39/+29
| | | | | Only the current version's flags are used, and they're all reset when changing versions, making it unnecessary to track non-current version flags.
* [EAX] Use separate FX slot state for each version (#730)Boris I. Bendovsky2022-07-121-510/+328
| | | | | | | * [EAX] Use separate FX slot state for each version [EAX] Don't defer FX slot properties * [EAX_FXSLOT] Use mPropsDirty to defer update [EAX_CONTEXT] Commit all updates on first initialization
* [EAX] Add separate effect state for each version (#705)Boris I. Bendovsky2022-05-241-110/+84
| | | | | * [EAX] Add separate effect state for each version * [EAX] Don't use EAX call as data member
* Move EAX files to their own sub-directoryChris Robinson2022-05-161-2/+2
|
* Replace a few asserts with actual checks or ASSUME()Chris Robinson2022-03-301-1/+1
|
* 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
|