Skip to content

Commit 1442f93

Browse files
committed
Fix destruction order in EngineMixer::~EngineMixer
1 parent faa58a3 commit 1442f93

3 files changed

Lines changed: 33 additions & 27 deletions

File tree

src/engine/enginemixer.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,16 @@ EngineMixer::EngineMixer(
209209

210210
EngineMixer::~EngineMixer() {
211211
// qDebug() << "in ~EngineMixer()";
212+
213+
for (int i = 0; i < m_channels.size(); ++i) {
214+
ChannelInfo* pChannelInfo = m_channels[i];
215+
delete pChannelInfo->m_pChannel;
216+
delete pChannelInfo->m_pVolumeControl;
217+
delete pChannelInfo->m_pMuteControl;
218+
delete pChannelInfo;
219+
}
220+
delete m_pWorkerScheduler;
221+
212222
delete m_pKeylockEngine;
213223
delete m_pCrossfader;
214224
delete m_pBalance;
@@ -242,16 +252,6 @@ EngineMixer::~EngineMixer() {
242252
delete m_pMainMonoMixdown;
243253
delete m_pMicMonitorMode;
244254
delete m_pHeadphoneEnabled;
245-
246-
delete m_pWorkerScheduler;
247-
248-
for (int i = 0; i < m_channels.size(); ++i) {
249-
ChannelInfo* pChannelInfo = m_channels[i];
250-
delete pChannelInfo->m_pChannel;
251-
delete pChannelInfo->m_pVolumeControl;
252-
delete pChannelInfo->m_pMuteControl;
253-
delete pChannelInfo;
254-
}
255255
}
256256

257257
const CSAMPLE* EngineMixer::getMainBuffer() const {

src/engine/enginemixer.h

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -288,36 +288,46 @@ class EngineMixer : public QObject, public AudioSource {
288288
mixxx::SampleBuffer m_talkoverHeadphones;
289289
mixxx::SampleBuffer m_sidechainMix;
290290

291-
EngineWorkerScheduler* m_pWorkerScheduler;
292-
EngineSync* m_pEngineSync;
293-
294-
ControlObject* m_pMainGain;
295-
ControlObject* m_pBoothGain;
296-
ControlObject* m_pHeadGain;
297291
ControlObject* m_pSampleRate;
298292
ControlObject* m_pOutputLatencyMs;
299293
ControlObject* m_pAudioLatencyOverloadCount;
300294
ControlObject* m_pAudioLatencyUsage;
301295
ControlObject* m_pAudioLatencyOverload;
302-
EngineTalkoverDucking* m_pTalkoverDucking;
296+
297+
EngineSync* m_pEngineSync;
298+
299+
ControlPotmeter* m_pCrossfader;
300+
ControlPotmeter* m_pBalance;
301+
ControlObject* m_pMainGain;
302+
ControlObject* m_pBoothGain;
303+
304+
EngineVuMeter* m_pVumeter;
305+
303306
EngineDelay* m_pMainDelay;
304307
EngineDelay* m_pHeadDelay;
305308
EngineDelay* m_pBoothDelay;
306309
EngineDelay* m_pLatencyCompensationDelay;
307310

308-
EngineVuMeter* m_pVumeter;
311+
ControlObject* m_pHeadGain;
312+
ControlPotmeter* m_pHeadMix;
313+
ControlPushButton* m_pHeadSplitEnabled;
314+
315+
EngineTalkoverDucking* m_pTalkoverDucking;
316+
309317
EngineSideChain* m_pEngineSideChain;
310318

311-
ControlPotmeter* m_pCrossfader;
312-
ControlPotmeter* m_pHeadMix;
313-
ControlPotmeter* m_pBalance;
314319
ControlPushButton* m_pXFaderMode;
315320
ControlPotmeter* m_pXFaderCurve;
316321
ControlPotmeter* m_pXFaderCalibration;
317322
ControlPushButton* m_pXFaderReverse;
318-
ControlPushButton* m_pHeadSplitEnabled;
323+
319324
ControlObject* m_pKeylockEngine;
320325

326+
// Mix two Mono channels. This is useful for outdoor gigs
327+
ControlObject* m_pMainMonoMixdown;
328+
329+
EngineWorkerScheduler* m_pWorkerScheduler;
330+
321331
PflGainCalculator m_headphoneGain;
322332
TalkoverGainCalculator m_talkoverGain;
323333
OrientationVolumeGainCalculator m_mainGain;
@@ -337,8 +347,6 @@ class EngineMixer : public QObject, public AudioSource {
337347
const ChannelHandleAndGroup m_busCrossfaderCenterHandle;
338348
const ChannelHandleAndGroup m_busCrossfaderRightHandle;
339349

340-
// Mix two Mono channels. This is useful for outdoor gigs
341-
ControlObject* m_pMainMonoMixdown;
342350
ControlObject* m_pMicMonitorMode;
343351

344352
volatile bool m_bBusOutputConnected[3];

src/test/signalpathtest.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,7 @@ class BaseSignalPathTest : public MixxxTest, SoundSourceProviderRegistration {
135135
[](PlayerInfo*) { PlayerInfo::destroy(); });
136136
}
137137

138-
~BaseSignalPathTest() override {
139-
PlayerInfo::destroy();
140-
}
138+
~BaseSignalPathTest() override = default;
141139

142140
void addDeck(EngineDeck* pDeck) {
143141
ControlObject::set(ConfigKey(pDeck->getGroup(), "main_mix"), 1.0);

0 commit comments

Comments
 (0)