diff options
author | be_ <be.0@gmx.com> | 2018-01-04 21:50:38 -0600 |
---|---|---|
committer | be_ <be.0@gmx.com> | 2018-01-04 21:58:47 -0600 |
commit | fff7f2e571bd9ea46d12a972c417aab0e24ce78a (patch) | |
tree | d1fc98fb2ce785182b61e659acea809e4856f86a /src/effects/effectchain.h | |
parent | 7ce4d44a4efdf0a6a662d3cd45c08231375e1d40 (diff) |
decouple EffectStatesMapArray from EffectChain
This fixes a crash deleting EffectStates after starting up with an
effect unit assigned to multiple input channels.
EffectChain::enableForInputChannel kept reusing the same array for
EffectStates and putting a pointer to this on the effects MessagePipe.
That assumed that the engine had a chance to process the message to load
the states by calling EffectProcessorImpl::loadStatesForInputChannel
before the next call to EffectChain::enableForInputChannel. On startup,
before the engine starts, this assumption is not true. The result was
that EffectProcessorImpl ended up storing pointers to the same
EffectStates for multiple input channels. This caused a crash when
~EffectProcessorImpl tried to delete the EffectStates for the second
input channel because the EffectState had already been deleted when
deleting the EffectStates for the first input channel.
Fixes https://bugs.launchpad.net/mixxx/+bug/1740531
Diffstat (limited to 'src/effects/effectchain.h')
-rw-r--r-- | src/effects/effectchain.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/src/effects/effectchain.h b/src/effects/effectchain.h index 160ce8b113..cedecdf80e 100644 --- a/src/effects/effectchain.h +++ b/src/effects/effectchain.h @@ -123,7 +123,6 @@ class EffectChain : public QObject { QList<EffectPointer> m_effects; EngineEffectChain* m_pEngineEffectChain; bool m_bAddedToEngine; - EffectStatesMapArray m_effectStatesMapArray; DISALLOW_COPY_AND_ASSIGN(EffectChain); }; |