void TrackInfoObject::setBeats(BeatsPointer pBeats) { QMutexLocker lock(&m_qMutex); // This whole method is not so great. The fact that Beats is an ABC is // limiting with respect to QObject and signals/slots. QObject* pObject = NULL; if (m_pBeats) { pObject = dynamic_cast<QObject*>(m_pBeats.data()); if (pObject) { disconnect(pObject, SIGNAL(updated()), this, SLOT(slotBeatsUpdated())); } } m_pBeats = pBeats; double bpm = 0.0; if (m_pBeats) { bpm = m_pBeats->getBpm(); pObject = dynamic_cast<QObject*>(m_pBeats.data()); if (pObject) { connect(pObject, SIGNAL(updated()), this, SLOT(slotBeatsUpdated())); } } setDirty(true); lock.unlock(); emit(bpmUpdated(bpm)); emit(beatsUpdated()); }
void TrackInfoObject::slotBeatsUpdated() { QMutexLocker lock(&m_qMutex); setDirty(true); double bpm = m_pBeats->getBpm(); lock.unlock(); emit(bpmUpdated(bpm)); emit(beatsUpdated()); }
void BpmControl::trackUnloaded(TrackPointer pTrack) { Q_UNUSED(pTrack); if (m_pTrack) { disconnect(m_pTrack.data(), SIGNAL(beatsUpdated()), this, SLOT(slotUpdatedTrackBeats())); m_pTrack.clear(); m_pBeats.clear(); } }
void ClockControl::trackLoaded(TrackPointer pTrack) { // Clear on-beat control m_pCOBeatActive->set(0.0); // Disconnect any previously loaded track/beats if (m_pTrack) { disconnect(m_pTrack.data(), SIGNAL(beatsUpdated()), this, SLOT(slotBeatsUpdated())); } m_pBeats.clear(); m_pTrack.clear(); if (pTrack) { m_pTrack = pTrack; m_pBeats = m_pTrack->getBeats(); connect(m_pTrack.data(), SIGNAL(beatsUpdated()), this, SLOT(slotBeatsUpdated())); } }
void BpmControl::trackLoaded(TrackPointer pTrack) { trackUnloaded(m_pTrack); if (pTrack) { m_pTrack = pTrack; m_pBeats = m_pTrack->getBeats(); connect(m_pTrack.data(), SIGNAL(beatsUpdated()), this, SLOT(slotUpdatedTrackBeats())); } }
void LoopingControl::trackLoaded(TrackPointer pNewTrack, TrackPointer pOldTrack) { Q_UNUSED(pOldTrack); if (m_pTrack) { disconnect(m_pTrack.data(), SIGNAL(beatsUpdated()), this, SLOT(slotUpdatedTrackBeats())); } clearActiveBeatLoop(); if (pNewTrack) { m_pTrack = pNewTrack; m_pBeats = m_pTrack->getBeats(); connect(m_pTrack.data(), SIGNAL(beatsUpdated()), this, SLOT(slotUpdatedTrackBeats())); } else { m_pTrack.clear(); m_pBeats.clear(); } }
void BpmControl::trackLoaded(TrackPointer pNewTrack, TrackPointer pOldTrack) { Q_UNUSED(pOldTrack); if (m_pTrack) { disconnect(m_pTrack.get(), SIGNAL(beatsUpdated()), this, SLOT(slotUpdatedTrackBeats())); } // reset for a new track resetSyncAdjustment(); if (pNewTrack) { m_pTrack = pNewTrack; m_pBeats = m_pTrack->getBeats(); connect(m_pTrack.get(), SIGNAL(beatsUpdated()), this, SLOT(slotUpdatedTrackBeats())); } else { m_pTrack.reset(); m_pBeats.clear(); } }