From 6b7fc06bc541043db92206a59f54a18346b9fafc Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Wed, 22 May 2024 13:00:08 +0200 Subject: [PATCH] qt6.qtmultimedia: fix build on darwin --- .../libraries/qt-6/modules/qtmultimedia.nix | 2 + ...n-revert-replace-deprecated-constant.patch | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 pkgs/development/libraries/qt-6/patches/qtmultimedia-darwin-revert-replace-deprecated-constant.patch diff --git a/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix b/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix index ba24fbe9294b..39ac1245118a 100644 --- a/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix +++ b/pkgs/development/libraries/qt-6/modules/qtmultimedia.nix @@ -39,6 +39,8 @@ qtModule { patches = [ ../patches/fix-qtgui-include-incorrect-case.patch + # Remove new constants since macOS 12+, since we build Qt with the macOS 11 SDK + ../patches/qtmultimedia-darwin-revert-replace-deprecated-constant.patch ] ++ lib.optionals stdenv.hostPlatform.isMinGW [ ../patches/qtmultimedia-windows-no-uppercase-libs.patch ../patches/qtmultimedia-windows-resolve-function-name.patch diff --git a/pkgs/development/libraries/qt-6/patches/qtmultimedia-darwin-revert-replace-deprecated-constant.patch b/pkgs/development/libraries/qt-6/patches/qtmultimedia-darwin-revert-replace-deprecated-constant.patch new file mode 100644 index 000000000000..3196a6e4158c --- /dev/null +++ b/pkgs/development/libraries/qt-6/patches/qtmultimedia-darwin-revert-replace-deprecated-constant.patch @@ -0,0 +1,50 @@ +diff --git a/src/multimedia/darwin/qdarwinmediadevices.mm b/src/multimedia/darwin/qdarwinmediadevices.mm +index b0a108935..881066928 100644 +--- a/src/multimedia/darwin/qdarwinmediadevices.mm ++++ b/src/multimedia/darwin/qdarwinmediadevices.mm +@@ -42,7 +42,7 @@ static AudioDeviceID defaultAudioDevice(QAudioDevice::Mode mode) + const AudioObjectPropertyAddress propertyAddress = { + selector, + kAudioObjectPropertyScopeGlobal, +- kAudioObjectPropertyElementMain, ++ kAudioObjectPropertyElementMaster, + }; + + if (auto audioDevice = getAudioObject(kAudioObjectSystemObject, propertyAddress, +@@ -77,7 +77,7 @@ static QList availableAudioDevices(QAudioDevice::Mode mode) + + const AudioObjectPropertyAddress audioDevicesPropertyAddress = { + kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal, +- kAudioObjectPropertyElementMain ++ kAudioObjectPropertyElementMaster + }; + + if (auto audioDevices = getAudioData( +@@ -130,11 +130,11 @@ static OSStatus audioDeviceChangeListener(AudioObjectID id, UInt32, + + static constexpr AudioObjectPropertyAddress listenerAddresses[] = { + { kAudioHardwarePropertyDefaultInputDevice, kAudioObjectPropertyScopeGlobal, +- kAudioObjectPropertyElementMain }, ++ kAudioObjectPropertyElementMaster }, + { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, +- kAudioObjectPropertyElementMain }, ++ kAudioObjectPropertyElementMaster }, + { kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal, +- kAudioObjectPropertyElementMain } ++ kAudioObjectPropertyElementMaster } + }; + + static void setAudioListeners(QDarwinMediaDevices &instance) +diff --git a/src/multimedia/darwin/qmacosaudiodatautils_p.h b/src/multimedia/darwin/qmacosaudiodatautils_p.h +index 8cc2f8440..5cd6fced2 100644 +--- a/src/multimedia/darwin/qmacosaudiodatautils_p.h ++++ b/src/multimedia/darwin/qmacosaudiodatautils_p.h +@@ -44,7 +44,7 @@ void printUnableToReadWarning(const char *logName, AudioObjectID objectID, const + + inline static AudioObjectPropertyAddress + makePropertyAddress(AudioObjectPropertySelector selector, QAudioDevice::Mode mode, +- AudioObjectPropertyElement element = kAudioObjectPropertyElementMain) ++ AudioObjectPropertyElement element = kAudioObjectPropertyElementMaster) + { + return { selector, + mode == QAudioDevice::Input ? kAudioDevicePropertyScopeInput