diff options
84 files changed, 4063 insertions, 1713 deletions
diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000000..ec18214138 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,29 @@ +build: +- default.nix +- CMakeLists.txt +- build/** +- cmake/** + +code quality: +- src/test/** +- .clang-format +- .codespell +- .eslint* +- .flake8 +- .pre-commit-config.yaml +- pyproject.toml + +controllers: +- res/controllers/** + +library: +- src/library/** + +skins: +- res/skins/** + +ui: +- src/**.ui +- src/dialog/** +- src/preferences/** +- src/widget/** diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000000..0873de8f8d --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,24 @@ +# This workflow will triage pull requests and apply a label based on the +# paths that are modified in the pull request. +# +# To use this workflow, you will need to set up a .github/labeler.yml +# file with configuration. For more information, see: +# https://github.com/actions/labeler + +name: "Pull Request Labeler" +on: +- pull_request_target + +jobs: + triage: + runs-on: ubuntu-latest + + steps: + - uses: actions/labeler@main + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + + # This works around bug https://github.com/actions/labeler/issues/104. + # The workaround was proposed here: + # https://github.com/wesnoth/wesnoth/commit/958c82d0867568057caaf58356502ec8c87d8366 + sync-labels: "" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 0000000000..e1f6e70933 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,40 @@ +name: pre-commit + +on: + push: + pull_request: + +jobs: + pre-commit: + name: Detecting code style issues + runs-on: ubuntu-latest + if: github.event_name == 'push' + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + - name: Install clang-format + run: sudo apt-get update && sudo apt-get install -y --no-install-recommends clang-format-10 + - uses: pre-commit/action@v2.0.0 + # There are too many files in the repo that have formatting issues. We'll + # disable these checks for now when pushing directly (but still run these + # on Pull Requests!). + env: + SKIP: end-of-file-fixer,trailing-whitespace,clang-format,eslint,no-commit-to-branch + pre-commit-pr: + name: Detecting code style issues + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 2 + - uses: actions/setup-python@v2 + - name: Install clang-format + run: sudo apt-get update && sudo apt-get install -y --no-install-recommends clang-format-10 + - uses: pre-commit/action@v2.0.0 + env: + SKIP: no-commit-to-branch + with: + # HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge + # HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch + extra_args: --from-ref HEAD^1 --to-ref HEAD diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000000..c415950fbd --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,18 @@ +name: "Detect stale issues" +on: + schedule: + - cron: "0 0 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: "This issue is marked as stale because it has been open 90 days with no activity." + stale-issue-label: "stale" + stale-pr-message: "This PR is marked as stale because it has been open 90 days with no activity." + stale-pr-label: "stale" + days-before-stale: 90 + days-before-close: -1 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0c34075038..2371a7855b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -45,7 +45,7 @@ default_language_version: python: python3 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.1.0 + rev: v3.2.0 hooks: - id: check-byte-order-marker exclude: ^.*(\.cbproj|\.groupproj|\.props|\.sln|\.vcxproj|\.vcxproj.filters)$ @@ -73,7 +73,7 @@ repos: entry: tools/codespell.py --ignore-file .codespellignore --ignore-regex "\\W(?:m_p*(?=[A-Z])|m_(?=\\w)|pp*(?=[A-Z])|k(?=[A-Z])|s_(?=\\w))" --files exclude: ^(\.codespellignore|src/dialog/dlgabout\.cpp|.*\.(?:pot?|ts|wxl))$ - repo: https://github.com/pre-commit/mirrors-eslint - rev: v7.2.0 + rev: v7.11.0 hooks: - id: eslint args: [--fix, --report-unused-disable-directives] @@ -98,7 +98,7 @@ repos: - id: black files: ^tools/.*$ - repo: https://gitlab.com/pycqa/flake8 - rev: '3.8.3' + rev: '3.8.4' hooks: - id: flake8 files: ^tools/.*$ diff --git a/.travis.yml b/.travis.yml index 5e2bf502a1..f532f2b95d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,38 +25,6 @@ env: jobs: include: - - name: pre-commit - if: type != pull_request - language: python - python: 3.7 - # There are too many files in the repo that have formatting issues. We'll - # disable these checks for now when pushing directly (but still run these - # on Pull Requests!). - env: SKIP=end-of-file-fixer,trailing-whitespace,clang-format,eslint - cache: - directories: - - $HOME/.cache/pre-commit - before_install: - - pip install pre-commit==2.5.1 - script: - - pre-commit run --all-files - addons: [] - - - name: pre-commit-pr - if: type == pull_request - language: python - python: 3.7 - cache: - directories: - - $HOME/.cache/pre-commit - before_install: - - pip install pre-commit==2.5.1 - script: - # HEAD is the not yet integrated PR merge commit +refs/pull/xxxx/merge - # HEAD^1 is the PR target branch and HEAD^2 is the HEAD of the source branch - - pre-commit run --from-ref HEAD^1 --to-ref HEAD --show-diff-on-failure - addons: [] - - name: Ubuntu/gcc/SCons build compiler: gcc # Ubuntu Bionic build prerequisites diff --git a/CHANGELOG.md b/CHANGELOG.md index b7feadd1a6..5427b9bc1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,10 +75,12 @@ * Add controller mapping for Hercules DJControl Inpulse 200 [#2542](https://github.com/mixxxdj/mixxx/pull/2542) * Add controller mapping for Hercules DJControl Jogvision [#2370](https://github.com/mixxxdj/mixxx/pull/2370) -* Fix missing manual in deb package [lp:1889776] (https://bugs.launchpad.net/mixxx/+bug/1889776) -* Fix caching of duplicate tracks that reference the same file #3027 -* Fix loss of precision when dealing with floating-point sample positions while setting loop out position and seeking using vinyl control #3126 #3127 - +* Fix missing manual in deb package [lp:1889776](https://bugs.launchpad.net/mixxx/+bug/1889776) +* Fix caching of duplicate tracks that reference the same file [#3027](https://github.com/mixxxdj/mixxx/pull/3027) +* Fix loss of precision when dealing with floating-point sample positions while setting loop out position and seeking using vinyl control [#3126](https://github.com/mixxxdj/mixxx/pull/3126) [#3127](https://github.com/mixxxdj/mixxx/pull/3127) +* Prevent moving a loop beyond track end [#3117](https://github.com/mixxxdj/mixxx/pull/3117) [lp:1799574](https://bugs.launchpad.net/mixxx/+bug/1799574) +* Use 6 instead of only 4 compatible musical keys (major/minor) [#3205](https://github.com/mixxxdj/mixxx/pull/3205) +* Fix possible memory corruption using JACK on Linux [#3160](https://github.com/mixxxdj/mixxx/pull/3160) ## [2.2.4](https://launchpad.net/mixxx/+milestone/2.2.4) (2020-06-27) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2201689a2d..06a76513c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -701,6 +701,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL src/sources/audiosource.cpp src/sources/audiosourcestereoproxy.cpp src/sources/metadatasourcetaglib.cpp + src/sources/readaheadframebuffer.cpp src/sources/soundsource.cpp src/sources/soundsourceflac.cpp src/sources/soundsourceoggvorbis.cpp @@ -942,7 +943,7 @@ if(MSVC) target_compile_options(mixxx-lib PUBLIC /W3) endif() else() - target_compile_options(mixxx-lib PUBLIC -Wall -Wextra) + target_compile_options(mixxx-lib PUBLIC -Wall -Wextra -Wfloat-conversion) if(WARNINGS_PEDANTIC) target_compile_options(mixxx-lib PUBLIC -pedantic) endif() @@ -1531,7 +1532,7 @@ if(KEYFINDER) set(KeyFinder_LIBRARY "lib/${CMAKE_STATIC_LIBRARY_PREFIX}keyfinder${CMAKE_STATIC_LIBRARY_SUFFIX}") ExternalProject_Add(keyfinder GIT_REPOSITORY https://github.com/ibsh/libKeyFinder.git - GIT_TAG faa563f0898b3cbfbd2ed0696deebc8a9b0c9af6 + GIT_TAG v2.2.2 GIT_SHALLOW TRUE INSTALL_DIR "${KeyFinder_INSTALL_DIR}" CMAKE_ARGS diff --git a/build/depends.py b/build/depends.py index bd90e058da..2bf003438d 100644 --- a/build/depends.py +++ b/build/depends.py @@ -948,6 +948,7 @@ class MixxxCore(Feature): "src/sources/audiosource.cpp", "src/sources/audiosourcestereoproxy.cpp", "src/sources/metadatasourcetaglib.cpp", + "src/sources/readaheadframebuffer.cpp", "src/sources/soundsource.cpp", "src/sources/soundsourceproviderregistry.cpp", "src/sources/soundsourceproxy.cpp", diff --git a/lib/kaitai/custom_decoder.h b/lib/kaitai/custom_decoder.h index 6da7f5fd23..6da7f5fd23 100755..100644 --- a/lib/kaitai/custom_decoder.h +++ b/lib/kaitai/custom_decoder.h diff --git a/lib/kaitai/kaitaistream.cpp b/lib/kaitai/kaitaistream.cpp index 2a9f082e95..2a9f082e95 100755..100644 --- a/lib/kaitai/kaitaistream.cpp +++ b/lib/kaitai/kaitaistream.cpp diff --git a/lib/kaitai/kaitaistream.h b/lib/kaitai/kaitaistream.h index 9592771db0..9592771db0 100755..100644 --- a/lib/kaitai/kaitaistream.h +++ b/lib/kaitai/kaitaistream.h diff --git a/lib/kaitai/kaitaistruct.h b/lib/kaitai/kaitaistruct.h index f8b848fdd1..f8b848fdd1 100755..100644 --- a/lib/kaitai/kaitaistruct.h +++ b/lib/kaitai/kaitaistruct.h diff --git a/res/controllers/Hercules_DJControl_Jogvision-scripts.js b/res/controllers/Hercules_DJControl_Jogvision-scripts.js index 76c9300601..b91aa32561 100644 --- a/res/controllers/Hercules_DJControl_Jogvision-scripts.js +++ b/res/controllers/Hercules_DJControl_Jogvision-scripts.js @@ -1,422 +1,531 @@ -// **************************************************************************** // * Mixxx mapping script file for the Hercules DJControl Jogvision. -// * Author: DJ Phatso, contributions by Kerrick Staley and David TV -// * Version 1.16 (Jun 2020) -// * Version 1.15 (Jun 2020) -// * Version 1.14 (Jun 2020) -// * Version 1.13 (May 2020) -// * Version 1.11 (May 2020) -// * Version 1.10 (May 2020) -// * Version 1.9 (May 2020) -// * Version 1.8 (May 2020) -// * Version 1.6 (January 2020) -// * Version 1.5 (January 2020) -// * Version 1.4 (December 2019) -// * Version 1.3 (November 2019) -// * Version 1.2 (November 2019) -// * Version 1.1 (March 2019) +// * Author: DJ Phatso (contributions by Kerrick Staley, and fully rewritten, completed and enhanced by David TV) // * Forum: https://www.mixxx.org/forums/viewtopic.php?f=7&t=12580 // * Wiki: https://www.mixxx.org/wiki/doku.php/hercules_dj_control_jogvision -// -// Changes to v1.16 -// - Added a "beatDetection" variable to use old school one (way better beat match, but no song position relative) -// -// Changes to v1.15 -// - Reset shift-"Loop ON", to do what Hercules wanted it to be: select FX2 for given channel. Now, -// the loop creation is done with "MODE"+"Loop ON" combo (here, MODE key works like "SHIFT" key ;) -// -// Changes to v1.14 -// - Better beat_active matching -// -// Changes to v1.13 -// - Added "shift"+AIRFX to do a high pass (apart from the default low pass) -// - Added shift+<multi FX> to set beatgrid at current play position -// -// Changes to v1.12 -// - Added "alternate" beat leds mode -// - Changed "follow" beats led algorithm with a better/more elegant version -// -// Changes to v1.11 -// - Changed beats led algorithm to match song beats (forward and backward) and fix leads positions, -// what allows backward led activation!! (didn't have that working previously) -// -// Changes to v1.10 -// - Changed jogwheel outer led movement based on playposition (much better!) -// - Added a user variable to set or not some effects at ini -// - Minor code convention corrections -// -// Changes to v1.9 -// - Added jogwheel outer led movement when scratch and back/forward spin -// -// Changes to v1.8 -// - Added normal, reverse, blink and follow modes for beat active led (see variable: beatActiveMode) -// -// Changes to v1.7 -// - Added back-spin (and forward-spin) effect on "vinyl" mode when jog wheel pushed from top -// -// Changes to v1.6 -// - Minor code-style changes (use camelCase, use "double quotes" and other if/else styles) -// -// Changes to v1.5 -// - Fixed regression not updating the VuMeters -// - Fixed regression not updating the CUE/MIX buttons -// -// Changes to v1.4 -// - Code cleanup and standarization -// - Added "orage" track led color (ala Serato) when play position is beyond the -// part of the track, but before the "end of track" Mixxx signal -// -// Changes to v1.3 -// - Enabled the creation o |