Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Track: Add missing NOTIFY signals for Q_PROPERTY declarations #3924

Merged
merged 8 commits into from
Jun 4, 2021
48 changes: 22 additions & 26 deletions src/mixer/basetrackplayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,26 +213,7 @@ TrackPointer BaseTrackPlayerImpl::loadFakeTrack(bool bPlay, double filebpm) {
m_pLoadedTrack = pTrack;
if (m_pLoadedTrack) {
// Listen for updates to the file's BPM
connect(m_pLoadedTrack.get(),
&Track::bpmUpdated,
m_pFileBPM.get(),
QOverload<double>::of(&ControlObject::set));

connect(m_pLoadedTrack.get(),
&Track::keyUpdated,
m_pKey.get(),
&ControlProxy::set);

// Listen for updates to the file's Replay Gain
connect(m_pLoadedTrack.get(),
&Track::replayGainUpdated,
this,
&BaseTrackPlayerImpl::slotSetReplayGain);

connect(m_pLoadedTrack.get(),
&Track::colorUpdated,
this,
&BaseTrackPlayerImpl::slotSetTrackColor);
connectLoadedTrack();
}

// Request a new track from EngineBuffer
Expand Down Expand Up @@ -349,17 +330,32 @@ TrackPointer BaseTrackPlayerImpl::unloadTrack() {

void BaseTrackPlayerImpl::connectLoadedTrack() {
connect(m_pLoadedTrack.get(),
&Track::bpmUpdated,
m_pFileBPM.get(),
QOverload<double>::of(&ControlObject::set));
&Track::bpmChanged,
this,
[this] {
TrackPointer pTrack = m_pLoadedTrack;
if (pTrack) {
m_pFileBPM->set(pTrack->getBpm());
}
});

connect(m_pLoadedTrack.get(),
&Track::keyUpdated,
m_pKey.get(),
&ControlProxy::set);
&Track::keyChanged,
this,
[this] {
TrackPointer pTrack = m_pLoadedTrack;
if (pTrack) {
const auto key = pTrack->getKeys().getGlobalKey();
m_pKey->set(static_cast<double>(key));
}
});

// Listen for updates to the file's Replay Gain
connect(m_pLoadedTrack.get(),
&Track::replayGainUpdated,
this,
&BaseTrackPlayerImpl::slotSetReplayGain);

connect(m_pLoadedTrack.get(),
&Track::colorUpdated,
this,
Expand Down
101 changes: 71 additions & 30 deletions src/track/track.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ void Track::replaceMetadataFromSource(
beatsAndBpmModified = trySetBpmWhileLocked(importedBpm.getValue());
}
modified |= beatsAndBpmModified;
const auto newBpm = getBpmWhileLocked();

auto keysModified = false;
if (importedKey != mixxx::track::io::key::INVALID) {
Expand All @@ -190,7 +189,6 @@ void Track::replaceMetadataFromSource(
mixxx::track::io::key::FILE_METADATA);
}
modified |= keysModified;
const auto newKey = m_record.getGlobalKey();

// Import track color from Serato tags if available
const auto newColor = m_record.getMetadata().getTrackInfo().getSeratoTags().getTrackColor();
Expand All @@ -206,17 +204,19 @@ void Track::replaceMetadataFromSource(
markDirtyAndUnlock(&lock);

if (beatsAndBpmModified) {
emitBeatsAndBpmUpdated(newBpm);
emitBeatsAndBpmUpdated();
}
if (keysModified) {
emitKeysUpdated(newKey);
emit keyChanged();
}
if (oldReplayGain != newReplayGain) {
emit replayGainUpdated(newReplayGain);
}
if (colorModified) {
emit colorUpdated(newColor);
}

emitChangedSignalsForAllMetadata();
}

// TODO: Import Serato metadata within the locking scope and not
Expand All @@ -240,6 +240,7 @@ bool Track::mergeExtraMetadataFromSource(
}
markDirtyAndUnlock(&lock);
// Modified
emitChangedSignalsForAllMetadata();
return true;
}

Expand Down Expand Up @@ -301,18 +302,19 @@ bool Track::replaceRecord(
markDirtyAndUnlock(&locked);

if (bpmUpdatedFlag) {
emit bpmUpdated(newBpm.getValue());
emit beatsUpdated();
emitBeatsAndBpmUpdated();
}
if (oldKey != newKey) {
emitKeysUpdated(newKey);
emit keyChanged();
}
if (oldReplayGain != newReplayGain) {
emit replayGainUpdated(newReplayGain);
}
if (oldColor != newColor) {
emit colorUpdated(newColor);
}

emitChangedSignalsForAllMetadata();
return true;
}

Expand Down Expand Up @@ -431,17 +433,34 @@ void Track::afterBeatsAndBpmUpdated(
QMutexLocker* pLock) {
DEBUG_ASSERT(pLock);

const auto bpm = getBpmWhileLocked();
markDirtyAndUnlock(pLock);
emitBeatsAndBpmUpdated(bpm);
emitBeatsAndBpmUpdated();
}

void Track::emitBeatsAndBpmUpdated(
mixxx::Bpm newBpm) {
emit bpmUpdated(newBpm.getValue());
void Track::emitBeatsAndBpmUpdated() {
emit bpmChanged();
emit beatsUpdated();
}

void Track::emitChangedSignalsForAllMetadata() {
emit artistChanged(getArtist());
emit titleChanged(getTitle());
emit albumChanged(getAlbum());
emit albumArtistChanged(getAlbumArtist());
emit genreChanged(getGenre());
emit composerChanged(getComposer());
emit groupingChanged(getGrouping());
emit yearChanged(getYear());
emit trackNumberChanged(getTrackNumber());
emit trackTotalChanged(getTrackTotal());
emit commentChanged(getComment());
emit bpmChanged();
emit timesPlayedChanged();
emit durationChanged();
emit infoChanged();
emit keyChanged();
}

void Track::setMetadataSynchronized(bool metadataSynchronized) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.ptrMetadataSynchronized(), metadataSynchronized)) {
uklotzde marked this conversation as resolved.
Show resolved Hide resolved
Expand Down Expand Up @@ -506,6 +525,7 @@ void Track::setDuration(mixxx::Duration duration) {
m_record.refMetadata().refStreamInfo().ptrDuration(),
duration)) {
markDirtyAndUnlock(&lock);
emit durationChanged();
}
}

Expand Down Expand Up @@ -536,8 +556,11 @@ QString Track::getTitle() const {

void Track::setTitle(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrTitle(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrTitle(), value)) {
markDirtyAndUnlock(&lock);
emit titleChanged(value);
emit infoChanged();
}
}

Expand All @@ -548,8 +571,11 @@ QString Track::getArtist() const {

void Track::setArtist(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrArtist(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrArtist(), value)) {
markDirtyAndUnlock(&lock);
emit artistChanged(value);
emit infoChanged();
}
}

Expand All @@ -560,8 +586,10 @@ QString Track::getAlbum() const {

void Track::setAlbum(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refAlbumInfo().ptrTitle(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refAlbumInfo().ptrTitle(), value)) {
markDirtyAndUnlock(&lock);
emit albumChanged(value);
}
}

Expand All @@ -572,8 +600,10 @@ QString Track::getAlbumArtist() const {

void Track::setAlbumArtist(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refAlbumInfo().ptrArtist(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refAlbumInfo().ptrArtist(), value)) {
markDirtyAndUnlock(&lock);
emit albumArtistChanged(value);
}
}

Expand All @@ -584,8 +614,10 @@ QString Track::getYear() const {

void Track::setYear(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrYear(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrYear(), value)) {
markDirtyAndUnlock(&lock);
emit yearChanged(value);
}
}

Expand All @@ -596,8 +628,10 @@ QString Track::getGenre() const {

void Track::setGenre(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrGenre(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrGenre(), value)) {
markDirtyAndUnlock(&lock);
emit genreChanged(value);
}
}

Expand All @@ -608,8 +642,10 @@ QString Track::getComposer() const {

void Track::setComposer(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrComposer(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrComposer(), value)) {
markDirtyAndUnlock(&lock);
emit composerChanged(value);
}
}

Expand All @@ -620,8 +656,10 @@ QString Track::getGrouping() const {

void Track::setGrouping(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrGrouping(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrGrouping(), value)) {
markDirtyAndUnlock(&lock);
emit groupingChanged(value);
}
}

Expand All @@ -637,15 +675,19 @@ QString Track::getTrackTotal() const {

void Track::setTrackNumber(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrTrackNumber(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrTrackNumber(), value)) {
markDirtyAndUnlock(&lock);
emit trackNumberChanged(value);
}
}

void Track::setTrackTotal(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrTrackTotal(), s.trimmed())) {
const QString value = s.trimmed();
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrTrackTotal(), value)) {
markDirtyAndUnlock(&lock);
emit trackTotalChanged(value);
}
}

Expand All @@ -658,6 +700,7 @@ void Track::setPlayCounter(const PlayCounter& playCounter) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.ptrPlayCounter(), playCounter)) {
markDirtyAndUnlock(&lock);
emit timesPlayedChanged();
}
}

Expand All @@ -667,6 +710,7 @@ void Track::updatePlayCounter(bool bPlayed) {
playCounter.updateLastPlayedNowAndTimesPlayed(bPlayed);
if (compareAndSet(m_record.ptrPlayCounter(), playCounter)) {
markDirtyAndUnlock(&lock);
emit timesPlayedChanged();
}
}

Expand All @@ -692,6 +736,7 @@ void Track::setComment(const QString& s) {
QMutexLocker lock(&m_qMutex);
if (compareAndSet(m_record.refMetadata().refTrackInfo().ptrComment(), s)) {
markDirtyAndUnlock(&lock);
emit commentChanged(s);
}
}

Expand Down Expand Up @@ -1275,15 +1320,8 @@ void Track::setRating (int rating) {
}

void Track::afterKeysUpdated(QMutexLocker* pLock) {
const auto newKey = m_record.getGlobalKey();
markDirtyAndUnlock(pLock);
emitKeysUpdated(newKey);
}

void Track::emitKeysUpdated(mixxx::track::io::key::ChromaticKey newKey) {
// New key might be INVALID. We don't care.
emit keyUpdated(KeyUtils::keyToNumericValue(newKey));
emit keysUpdated();
emit keyChanged();
}

void Track::setKeys(const Keys& keys) {
Expand Down Expand Up @@ -1588,6 +1626,7 @@ void Track::setAudioProperties(
m_record.refMetadata().ptrStreamInfo(),
streamInfo)) {
markDirtyAndUnlock(&lock);
emit durationChanged();
}
}

Expand All @@ -1603,6 +1642,7 @@ void Track::updateStreamInfoFromSource(
// Nothing more to do
if (updated) {
markDirtyAndUnlock(&lock);
emit durationChanged();
}
return;
}
Expand Down Expand Up @@ -1632,6 +1672,7 @@ void Track::updateStreamInfoFromSource(
afterBeatsAndBpmUpdated(&lock);
} else {
markDirtyAndUnlock(&lock);
emit durationChanged();
}
if (cuesImported) {
emit cuesUpdated();
Expand Down
Loading