diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2021-12-28 17:00:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-28 17:00:42 +0100 |
commit | ee071a672f2a03cbb6c84c29a4c90529acd3003f (patch) | |
tree | d917f8e58d5b936bdc88f572d3a5bc8c2cbac6fc | |
parent | 0df8fe7b4ce01a634f1cc5b25a9cd69eb177f298 (diff) | |
parent | 4ecd30ad11cdd5f08c5236203e1a3e379cae6a1a (diff) |
Merge pull request #4587 from ronso0/bpm-crash-halve-double
DlgTrackInfo: ensure Beats pointer before scaling beats
-rw-r--r-- | src/library/dlgtrackinfo.cpp | 87 | ||||
-rw-r--r-- | src/library/dlgtrackinfo.h | 8 |
2 files changed, 25 insertions, 70 deletions
diff --git a/src/library/dlgtrackinfo.cpp b/src/library/dlgtrackinfo.cpp index 92a785d704..b885945e4e 100644 --- a/src/library/dlgtrackinfo.cpp +++ b/src/library/dlgtrackinfo.cpp @@ -98,30 +98,24 @@ void DlgTrackInfo::init() { this, &DlgTrackInfo::slotCancel); - connect(bpmDouble, - &QPushButton::clicked, - this, - &DlgTrackInfo::slotBpmDouble); - connect(bpmHalve, - &QPushButton::clicked, - this, - &DlgTrackInfo::slotBpmHalve); - connect(bpmTwoThirds, - &QPushButton::clicked, - this, - &DlgTrackInfo::slotBpmTwoThirds); - connect(bpmThreeFourth, - &QPushButton::clicked, - this, - &DlgTrackInfo::slotBpmThreeFourth); - connect(bpmFourThirds, - &QPushButton::clicked, - this, - &DlgTrackInfo::slotBpmFourThirds); - connect(bpmThreeHalves, - &QPushButton::clicked, - this, - &DlgTrackInfo::slotBpmThreeHalves); + connect(bpmDouble, &QPushButton::clicked, this, [this] { + slotScaleBpm(mixxx::Beats::DOUBLE); + }); + connect(bpmHalve, &QPushButton::clicked, this, [this] { + slotScaleBpm(mixxx::Beats::HALVE); + }); + connect(bpmTwoThirds, &QPushButton::clicked, this, [this] { + slotScaleBpm(mixxx::Beats::TWOTHIRDS); + }); + connect(bpmThreeFourth, &QPushButton::clicked, this, [this] { + slotScaleBpm(mixxx::Beats::THREEFOURTHS); + }); + connect(bpmFourThirds, &QPushButton::clicked, this, [this] { + slotScaleBpm(mixxx::Beats::FOURTHIRDS); + }); + connect(bpmThreeHalves, &QPushButton::clicked, this, [this] { + slotScaleBpm(mixxx::Beats::THREEHALVES); + }); connect(bpmClear, &QPushButton::clicked, this, @@ -468,46 +462,13 @@ void DlgTrackInfo::clear() { m_pWCoverArtLabel->setCoverArt(m_loadedCoverInfo, QPixmap()); } -void DlgTrackInfo::slotBpmDouble() { - m_pBeatsClone = m_pBeatsClone->scale(mixxx::Beats::DOUBLE); - // read back the actual value - double newValue = m_pBeatsClone->getBpm(); - spinBpm->setValue(newValue); -} - -void DlgTrackInfo::slotBpmHalve() { - m_pBeatsClone = m_pBeatsClone->scale(mixxx::Beats::HALVE); - // read back the actual value - double newValue = m_pBeatsClone->getBpm(); - spinBpm->setValue(newValue); -} - -void DlgTrackInfo::slotBpmTwoThirds() { - m_pBeatsClone = m_pBeatsClone->scale(mixxx::Beats::TWOTHIRDS); - // read back the actual value - double newValue = m_pBeatsClone->getBpm(); - spinBpm->setValue(newValue); -} - -void DlgTrackInfo::slotBpmThreeFourth() { - m_pBeatsClone = m_pBeatsClone->scale(mixxx::Beats::THREEFOURTHS); - // read back the actual value - double newValue = m_pBeatsClone->getBpm(); - spinBpm->setValue(newValue); -} - -void DlgTrackInfo::slotBpmFourThirds() { - m_pBeatsClone = m_pBeatsClone->scale(mixxx::Beats::FOURTHIRDS); - // read back the actual value - double newValue = m_pBeatsClone->getBpm(); - spinBpm->setValue(newValue); -} - -void DlgTrackInfo::slotBpmThreeHalves() { - m_pBeatsClone = m_pBeatsClone->scale(mixxx::Beats::THREEHALVES); +void DlgTrackInfo::slotScaleBpm(mixxx::Beats::BPMScale scale) { + if (!m_pBeatsClone) { + return; + } + m_pBeatsClone = m_pBeatsClone->scale(scale); // read back the actual value - double newValue = m_pBeatsClone->getBpm(); - spinBpm->setValue(newValue); + spinBpm->setValue(m_pBeatsClone->getBpm()); } void DlgTrackInfo::slotBpmClear() { diff --git a/src/library/dlgtrackinfo.h b/src/library/dlgtrackinfo.h index 0d9348ffc0..dfbf049f45 100644 --- a/src/library/dlgtrackinfo.h +++ b/src/library/dlgtrackinfo.h @@ -50,13 +50,7 @@ class DlgTrackInfo : public QDialog, public Ui::DlgTrackInfo { void slotCancel(); void trackUpdated(); - - void slotBpmDouble(); - void slotBpmHalve(); - void slotBpmTwoThirds(); - void slotBpmThreeFourth(); - void slotBpmFourThirds(); - void slotBpmThreeHalves(); + void slotScaleBpm(mixxx::Beats::BPMScale scale); void slotBpmClear(); void slotBpmConstChanged(int state); void slotBpmTap(double averageLength, int numSamples); |