From 1ad263b586810a6b05edeb075fb1c8a2da9b9bb7 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 15:35:33 +0200 Subject: [PATCH 1/8] ControllerRenderingEngine: Fix GL includes Instead of include , which is unavailable on macOS and not used elsewhere in the codebase either, we include the Qt OpenGL headers. --- src/controllers/rendering/controllerrenderingengine.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/rendering/controllerrenderingengine.h b/src/controllers/rendering/controllerrenderingengine.h index 770e2b72271..af445de65d8 100644 --- a/src/controllers/rendering/controllerrenderingengine.h +++ b/src/controllers/rendering/controllerrenderingengine.h @@ -1,8 +1,8 @@ #pragma once -#include - #include +#include +#include #include #include From 8976465a0d4103888f1a907d219d3269d335ead5 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 15:42:11 +0200 Subject: [PATCH 2/8] ControllerScriptEngineLegacy: Disable execution policy with libc++ --- .../scripting/legacy/controllerscriptenginelegacy.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp index 4dd7fb9f4b9..63eddd8d97e 100644 --- a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp +++ b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp @@ -7,6 +7,7 @@ #include #include #include +#include // Prevent conflict with methods called 'emit' in source #pragma push_macro("emit") @@ -323,7 +324,11 @@ void ControllerScriptEngineLegacy::setScriptFiles( m_scriptFiles = scripts; #ifdef MIXXX_USE_QML - setQMLMode(std::any_of(std::execution::par_unseq, + setQMLMode(std::any_of( +#ifndef _LIBCPP_VERSION // Still experimental in Clang's libc++ as of June 2024: + // https://github.com/llvm/llvm-project/issues/65125 + std::execution::par_unseq, +#endif m_scriptFiles.cbegin(), m_scriptFiles.cend(), [](const auto& scriptFileInfo) { From eb306396ca34585a78455c2ce5b6f9dc3967fe90 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 15:47:40 +0200 Subject: [PATCH 3/8] CI: Reenable QML in macOS builds --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dbbc428761e..4045453cd0c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,7 +47,7 @@ jobs: -DMACOS_BUNDLE=ON -DMODPLUG=ON -DQT6=ON - -DQML=OFF + -DQML=ON -DWAVPACK=ON -DVCPKG_TARGET_TRIPLET=x64-osx-min1100-release -DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release @@ -72,7 +72,7 @@ jobs: -DMACOS_BUNDLE=ON -DMODPLUG=ON -DQT6=ON - -DQML=OFF + -DQML=ON -DWAVPACK=ON -DVCPKG_TARGET_TRIPLET=arm64-osx-min1100-release -DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release From db9a9afaf4c87642fa7b99c3b0063e7691dc39d3 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 16:08:09 +0200 Subject: [PATCH 4/8] ControllerScriptEngineLegacy: Remove execution policy As per PR feedback --- .../scripting/legacy/controllerscriptenginelegacy.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp index 63eddd8d97e..6f078be2256 100644 --- a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp +++ b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp @@ -7,13 +7,6 @@ #include #include #include -#include - -// Prevent conflict with methods called 'emit' in source -#pragma push_macro("emit") -#undef emit -#include -#pragma pop_macro("emit") #endif #include "control/controlobject.h" @@ -325,10 +318,6 @@ void ControllerScriptEngineLegacy::setScriptFiles( #ifdef MIXXX_USE_QML setQMLMode(std::any_of( -#ifndef _LIBCPP_VERSION // Still experimental in Clang's libc++ as of June 2024: - // https://github.com/llvm/llvm-project/issues/65125 - std::execution::par_unseq, -#endif m_scriptFiles.cbegin(), m_scriptFiles.cend(), [](const auto& scriptFileInfo) { From 9064f94bf0e0ba7ea4c089594d81e2d9c8749838 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 16:25:57 +0200 Subject: [PATCH 5/8] ControllerScriptEngineLegacy: Use reinterpret_cast for image buffer --- .../scripting/legacy/controllerscriptenginelegacy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp index 6f078be2256..b1c3941c605 100644 --- a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp +++ b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp @@ -654,7 +654,7 @@ void ControllerScriptEngineLegacy::handleScreenFrame( emit previewRenderedScreen(screenInfo, screenDebug); } - QByteArray input(std::bit_cast(frame.constBits()), frame.sizeInBytes()); + QByteArray input(reinterpret_cast(frame.constBits()), frame.sizeInBytes()); const TransformScreenFrameFunction& transformMethod = m_transformScreenFrameFunctions[screenInfo.identifier]; From 1cb286f288c92f5cfd0dad3a60321d1f660240a8 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 16:36:26 +0200 Subject: [PATCH 6/8] ControllerScriptEngineLegacy: Add short comment on `bit_cast` --- .../scripting/legacy/controllerscriptenginelegacy.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp index b1c3941c605..b9f4e06efab 100644 --- a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp +++ b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp @@ -654,6 +654,8 @@ void ControllerScriptEngineLegacy::handleScreenFrame( emit previewRenderedScreen(screenInfo, screenDebug); } + // TODO: Refactor this to a `std::bit_cast` once we drop support for older + // compilers that don't support it (e.g. Clang/libc++ on macOS 11) QByteArray input(reinterpret_cast(frame.constBits()), frame.sizeInBytes()); const TransformScreenFrameFunction& transformMethod = m_transformScreenFrameFunctions[screenInfo.identifier]; From 9ad776e092117c3ab5456d9a8a578c7989f4b1f1 Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 17:27:52 +0200 Subject: [PATCH 7/8] ControllerScriptEngineLegacy: Update comment on `bit_cast` --- .../scripting/legacy/controllerscriptenginelegacy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp index b9f4e06efab..9cede503565 100644 --- a/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp +++ b/src/controllers/scripting/legacy/controllerscriptenginelegacy.cpp @@ -655,7 +655,7 @@ void ControllerScriptEngineLegacy::handleScreenFrame( } // TODO: Refactor this to a `std::bit_cast` once we drop support for older - // compilers that don't support it (e.g. Clang/libc++ on macOS 11) + // compilers that don't support it (e.g. older than Xcode 14.3/macOS 13) QByteArray input(reinterpret_cast(frame.constBits()), frame.sizeInBytes()); const TransformScreenFrameFunction& transformMethod = m_transformScreenFrameFunctions[screenInfo.identifier]; From 0ccf1c1d164133335342940c216a11b8d38bd28e Mon Sep 17 00:00:00 2001 From: fwcd Date: Thu, 6 Jun 2024 19:24:09 +0200 Subject: [PATCH 8/8] CI: Disable QML CI on macOS x64 for now https://github.com/mixxxdj/mixxx/pull/13334#issuecomment-2152990404 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4045453cd0c..0dc0c94759c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,7 +47,7 @@ jobs: -DMACOS_BUNDLE=ON -DMODPLUG=ON -DQT6=ON - -DQML=ON + -DQML=OFF -DWAVPACK=ON -DVCPKG_TARGET_TRIPLET=x64-osx-min1100-release -DVCPKG_DEFAULT_HOST_TRIPLET=x64-osx-min1100-release