summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2021-12-28 17:00:42 +0100
committerGitHub <noreply@github.com>2021-12-28 17:00:42 +0100
commitee071a672f2a03cbb6c84c29a4c90529acd3003f (patch)
treed917f8e58d5b936bdc88f572d3a5bc8c2cbac6fc
parent0df8fe7b4ce01a634f1cc5b25a9cd69eb177f298 (diff)
parent4ecd30ad11cdd5f08c5236203e1a3e379cae6a1a (diff)
Merge pull request #4587 from ronso0/bpm-crash-halve-double
DlgTrackInfo: ensure Beats pointer before scaling beats
-rw-r--r--src/library/dlgtrackinfo.cpp87
-rw-r--r--src/library/dlgtrackinfo.h8
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);