Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }}

sync:
if: ${{ github.ref != 'refs/heads/main' }} && ${{ github.repository == 'mixxxdj/mixxx' }}
if: ${{ github.ref != 'refs/heads/main' && github.repository == 'mixxxdj/mixxx' }}
uses: ./.github/workflows/sync_branches.yml
secrets:
MIXXX_BRANCH_SYNC_PAT: ${{ secrets.MIXXX_BRANCH_SYNC_PAT }}
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5045,7 +5045,7 @@ if(NOT CPACK_DEBIAN_PACKAGE_RELEASE)
set(CPACK_DEBIAN_PACKAGE_RELEASE 1)
endif()

set(CPACK_DEBIAN_DISTRIBUTION_RELEASES noble oracular plucky questing)
set(CPACK_DEBIAN_DISTRIBUTION_RELEASES noble plucky questing)
set(CPACK_DEBIAN_SOURCE_DIR ${CMAKE_SOURCE_DIR})
set(
CPACK_DEBIAN_UPLOAD_PPA_SCRIPT
Expand Down
2 changes: 1 addition & 1 deletion res/translations/mixxx_fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3763,7 +3763,7 @@ trace : ci-dessus + messages de profilage</translation>
<message>
<location filename="../../src/library/trackset/crate/cratefeature.cpp" line="97"/>
<source>Auto DJ Track Source</source>
<translation>Auto DJ Source de piste</translation>
<translation>Auto DJ source de piste</translation>
</message>
<message>
<location filename="../../src/library/trackset/crate/cratefeature.cpp" line="479"/>
Expand Down
7 changes: 7 additions & 0 deletions src/engine/controls/ratecontrol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -628,3 +628,10 @@ void RateControl::notifyWrapAround(mixxx::audio::FramePos triggerPos,
void RateControl::notifySeek(mixxx::audio::FramePos position) {
m_pScratchController->notifySeek(position);
}

void RateControl::resetPositionScratchController() {
// Resets the scratch state to avoid engine freeze due to insanley high rate
// reported on track load while scratching.
// https://github.com/mixxxdj/mixxx/issues/15082
m_pScratchController->reset();
}
1 change: 1 addition & 0 deletions src/engine/controls/ratecontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class RateControl : public EngineControl {
void notifyWrapAround(mixxx::audio::FramePos triggerPos,
mixxx::audio::FramePos targetPos);
void notifySeek(mixxx::audio::FramePos position) override;
void resetPositionScratchController();

public slots:
void slotRateRangeChanged(double);
Expand Down
6 changes: 6 additions & 0 deletions src/engine/enginebuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -648,13 +648,19 @@ void EngineBuffer::ejectTrack() {

if (pOldTrack) {
notifyTrackLoaded(TrackPointer(), pOldTrack);
} else {
// When not invoking notifyTrackLoaded() call this separately
m_pRateControl->resetPositionScratchController();
}

m_iTrackLoading = 0;
m_pChannelToCloneFrom = nullptr;
}

void EngineBuffer::notifyTrackLoaded(
TrackPointer pNewTrack, TrackPointer pOldTrack) {
m_pRateControl->resetPositionScratchController();

if (pOldTrack) {
disconnect(
pOldTrack.get(),
Expand Down
10 changes: 10 additions & 0 deletions src/engine/positionscratchcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,3 +329,13 @@ void PositionScratchController::notifySeek(mixxx::audio::FramePos position) {
// distance traveled in m_samplePosDeltaSum
m_seekSamplePos = newPos;
}

void PositionScratchController::reset() {
// Resets the scratch state to avoid engine freeze due to insanley high rate
// reported on track load while scratching.
// https://github.com/mixxxdj/mixxx/issues/15082
m_pScratchEnable->set(0.0);
m_isScratching = false;
m_inertiaEnabled = false;
m_rate = 0;
}
1 change: 1 addition & 0 deletions src/engine/positionscratchcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class PositionScratchController : public QObject {
return m_rate;
}
void notifySeek(mixxx::audio::FramePos position);
void reset();

private slots:
void slotUpdateFilterParameters(double sampleRate);
Expand Down
5 changes: 4 additions & 1 deletion src/library/dlgtrackinfomulti.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,10 @@ void DlgTrackInfoMulti::loadTracks(const QList<TrackPointer>& pTracks) {
m_pLoadedTracks.clear();
}
for (const auto& pTrack : pTracks) {
m_pLoadedTracks.insert(pTrack.get()->getId(), pTrack);
if (pTrack.get()) {
m_pLoadedTracks.insert(pTrack.get()->getId(), pTrack);
}
// Skip unavailable tracks
}

updateFromTracks();
Expand Down
14 changes: 7 additions & 7 deletions src/skin/legacy/tooltips.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -705,13 +705,13 @@ void Tooltips::addStandardTooltips() {
<< tr("Repeat")
<< tr("When active the track will repeat if you go past the end or reverse before the start.");

add("eject") << tr("Eject") << tr("Ejects track from the player.")
<< tr("Un-ejects when no track is loaded, i.e. reloads the "
"track that was ejected last (of any deck).")
<< QString("%1: %2").arg(doubleClick,
"Reloads the last replaced track. "
"If no track is loaded reloads the second-last "
"ejected track.");
add("eject")
<< tr("Eject") << tr("Ejects track from the player.")
<< tr("Un-ejects when no track is loaded, i.e. reloads the "
"track that was ejected last (of any deck).")
<< QString("%1: %2").arg(doubleClick,
tr("Reloads the last replaced track. If no track is "
"loaded reloads the second-last ejected track."));

add("hotcue") << tr("Hotcue")
<< QString("%1: %2").arg(leftClick,
Expand Down
16 changes: 10 additions & 6 deletions src/widget/wtrackmenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1283,7 +1283,7 @@ TrackIdList WTrackMenu::getTrackIds() const {
TrackIdList trackIds;
if (m_pTrackModel) {
trackIds.reserve(m_trackIndexList.size());
for (const auto& index : m_trackIndexList) {
for (const auto& index : std::as_const(m_trackIndexList)) {
const auto trackId = m_pTrackModel->getTrackId(index);
if (!trackId.isValid()) {
// Skip unavailable tracks
Expand All @@ -1305,7 +1305,7 @@ QList<TrackRef> WTrackMenu::getTrackRefs() const {
QList<TrackRef> trackRefs;
if (m_pTrackModel) {
trackRefs.reserve(m_trackIndexList.size());
for (const auto& index : m_trackIndexList) {
for (const auto& index : std::as_const(m_trackIndexList)) {
auto trackRef = TrackRef::fromFilePath(
m_pTrackModel->getTrackLocation(index),
m_pTrackModel->getTrackId(index));
Expand All @@ -1326,7 +1326,7 @@ QList<TrackRef> WTrackMenu::getTrackRefs() const {

TrackPointer WTrackMenu::getFirstTrackPointer() const {
if (m_pTrackModel) {
for (const auto& index : m_trackIndexList) {
for (const auto& index : std::as_const(m_trackIndexList)) {
const auto pTrack = m_pTrackModel->getTrack(index);
if (pTrack) {
return pTrack;
Expand All @@ -1341,7 +1341,7 @@ TrackPointer WTrackMenu::getFirstTrackPointer() const {
TrackPointerList WTrackMenu::getTrackPointers() const {
TrackPointerList tracks;
if (m_pTrackModel) {
for (const auto& index : m_trackIndexList) {
for (const auto& index : std::as_const(m_trackIndexList)) {
const auto pTrack = m_pTrackModel->getTrack(index);
if (pTrack) {
tracks.append(pTrack);
Expand Down Expand Up @@ -2723,8 +2723,12 @@ void WTrackMenu::slotShowDlgTrackInfo() {
});
QList<TrackPointer> tracks;
tracks.reserve(getTrackCount());
for (int i = 0; i < m_trackIndexList.size(); i++) {
tracks.append(m_pTrackModel->getTrack(m_trackIndexList.at(i)));
for (const auto& index : std::as_const(m_trackIndexList)) {
const auto pTrack = m_pTrackModel->getTrack(index);
if (pTrack) {
tracks.append(pTrack);
}
// Skip unavailable tracks
}
m_pDlgTrackInfoMulti->loadTracks(tracks);
m_pDlgTrackInfoMulti->show();
Expand Down