diff --git a/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.4.0.patchset b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.4.0.patchset deleted file mode 100644 index 4cad81c02..000000000 --- a/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.4.0.patchset +++ /dev/null @@ -1,212 +0,0 @@ -From d80bbe2bfdbecd939303fd196d806e7a46166d30 Mon Sep 17 00:00:00 2001 -From: Gerasim Troeglazov <3dEyes@gmail.com> -Date: Sun, 2 Oct 2022 20:28:04 +1000 -Subject: Enable OpenAL (wasm) audio backend for Haiku - - -diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt -index 651c7ee..6b97620 100644 ---- a/src/multimedia/CMakeLists.txt -+++ b/src/multimedia/CMakeLists.txt -@@ -212,7 +212,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf - ksuser - ) - --qt_internal_extend_target(Multimedia CONDITION WASM -+qt_internal_extend_target(Multimedia CONDITION WASM OR HAIKU - SOURCES - wasm/qwasmmediadevices.cpp wasm/qwasmmediadevices_p.h - wasm/qwasmaudiosource.cpp wasm/qwasmaudiosource_p.h -diff --git a/src/multimedia/configure.cmake b/src/multimedia/configure.cmake -index efcadfc..72a7d5f 100644 ---- a/src/multimedia/configure.cmake -+++ b/src/multimedia/configure.cmake -@@ -73,7 +73,7 @@ qt_feature("ffmpeg" PRIVATE - LABEL "FFmpeg" - ENABLE INPUT_ffmpeg STREQUAL 'yes' - DISABLE INPUT_ffmpeg STREQUAL 'no' -- CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR QT_FEATURE_pulseaudio) -+ CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR HAIKU OR QT_FEATURE_pulseaudio) - ) - qt_feature("alsa" PUBLIC PRIVATE - LABEL "ALSA (experimental)" -@@ -200,5 +200,5 @@ qt_configure_end_summary_section() # end of "Qt Multimedia" section - qt_configure_add_report_entry( - TYPE WARNING - MESSAGE "No backend for low level audio found." -- CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM -+ CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM AND NOT HAIKU - ) -diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp -index 26e62d6..bab5ae5 100644 ---- a/src/multimedia/platform/qplatformmediadevices.cpp -+++ b/src/multimedia/platform/qplatformmediadevices.cpp -@@ -22,7 +22,7 @@ - #include - #elif defined(Q_OS_QNX) - #include --#elif defined(Q_OS_WASM) -+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) - #include - #endif - -@@ -63,7 +63,7 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance() - holder.nativeInstance = new QPulseAudioMediaDevices; - #elif defined(Q_OS_QNX) - holder.nativeInstance = new QQnxMediaDevices; --#elif defined(Q_OS_WASM) -+#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) - holder.nativeInstance = new QWasmMediaDevices; - #endif - -diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp -index b8f3532..81ebebd 100644 ---- a/src/multimedia/wasm/qwasmaudiodevice.cpp -+++ b/src/multimedia/wasm/qwasmaudiodevice.cpp -@@ -2,9 +2,11 @@ - // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only - - #include "qwasmaudiodevice_p.h" -+#ifndef Q_OS_HAIKU - #include - #include - #include -+#endif - - #include - #include -@@ -35,6 +37,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is - // FIXME: firefox - // An AudioContext was prevented from starting automatically. - // It must be created or resumed after a user gesture on the page. -+#ifndef Q_OS_HAIKU - emscripten::val audioContext = emscripten::val::global("window")["AudioContext"].new_(); - if (audioContext == emscripten::val::undefined()) - audioContext = emscripten::val::global("window")["webkitAudioContext"].new_(); -@@ -44,6 +47,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is - audioContext.call("close"); - preferredFormat.setSampleRate(sRate); - } -+#endif - - auto f = QAudioFormat::Float; - -diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp -index 7c6a5cf..ee63fcf 100644 ---- a/src/multimedia/wasm/qwasmaudiosink.cpp -+++ b/src/multimedia/wasm/qwasmaudiosink.cpp -@@ -4,7 +4,9 @@ - #include "qwasmaudiosink_p.h" - - -+#ifndef Q_OS_HAIKU - #include -+#endif - #include - #include - #include -@@ -209,7 +211,7 @@ void QWasmAudioSink::resume() - alSourcePlay(aldata->source); - } - --int QWasmAudioSink::bytesFree() const -+qsizetype QWasmAudioSink::bytesFree() const - { - int processed; - alGetSourcei(aldata->source, AL_BUFFERS_PROCESSED, &processed); -@@ -217,7 +219,7 @@ int QWasmAudioSink::bytesFree() const - + processed) : 0; - } - --void QWasmAudioSink::setBufferSize(int value) -+void QWasmAudioSink::setBufferSize(qsizetype value) - { - if (m_running) - return; -@@ -225,7 +227,7 @@ void QWasmAudioSink::setBufferSize(int value) - m_bufferSize = value; - } - --int QWasmAudioSink::bufferSize() const -+qsizetype QWasmAudioSink::bufferSize() const - { - return m_bufferSize; - } -diff --git a/src/multimedia/wasm/qwasmaudiosink_p.h b/src/multimedia/wasm/qwasmaudiosink_p.h -index c165f28..be00ecf 100644 ---- a/src/multimedia/wasm/qwasmaudiosink_p.h -+++ b/src/multimedia/wasm/qwasmaudiosink_p.h -@@ -69,9 +69,9 @@ public: - void reset() override; - void suspend() override; - void resume() override; -- int bytesFree() const override; -- void setBufferSize(int value) override; -- int bufferSize() const override; -+ qsizetype bytesFree() const override; -+ void setBufferSize(qsizetype value) override; -+ qsizetype bufferSize() const override; - qint64 processedUSecs() const override; - QAudio::Error error() const override; - QAudio::State state() const override; -diff --git a/src/multimedia/wasm/qwasmaudiosource.cpp b/src/multimedia/wasm/qwasmaudiosource.cpp -index bc7b34b..628720a 100644 ---- a/src/multimedia/wasm/qwasmaudiosource.cpp -+++ b/src/multimedia/wasm/qwasmaudiosource.cpp -@@ -3,7 +3,10 @@ - - #include "qwasmaudiosource_p.h" - -+#ifndef Q_OS_HAIKU - #include -+#endif -+ - #include - #include - #include -@@ -215,7 +218,7 @@ void QWasmAudioSource::resume() - alcCaptureStart(aldata->device); - } - --int QWasmAudioSource::bytesReady() const -+qsizetype QWasmAudioSource::bytesReady() const - { - if (!m_running) - return 0; -@@ -224,14 +227,14 @@ int QWasmAudioSource::bytesReady() const - return m_format.bytesForFrames(samples); - } - --void QWasmAudioSource::setBufferSize(int value) -+void QWasmAudioSource::setBufferSize(qsizetype value) - { - if (!m_running) - return; - m_bufferSize = value; - } - --int QWasmAudioSource::bufferSize() const -+qsizetype QWasmAudioSource::bufferSize() const - { - return m_bufferSize; - } -diff --git a/src/multimedia/wasm/qwasmaudiosource_p.h b/src/multimedia/wasm/qwasmaudiosource_p.h -index 96cb94d..f08455c 100644 ---- a/src/multimedia/wasm/qwasmaudiosource_p.h -+++ b/src/multimedia/wasm/qwasmaudiosource_p.h -@@ -55,9 +55,9 @@ public: - void reset() override; - void suspend() override; - void resume() override; -- int bytesReady() const override; -- void setBufferSize(int value) override; -- int bufferSize() const override; -+ qsizetype bytesReady() const override; -+ void setBufferSize(qsizetype value) override; -+ qsizetype bufferSize() const override; - qint64 processedUSecs() const override; - QAudio::Error error() const override; - QAudio::State state() const override; --- -2.36.1 - diff --git a/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.5.0.patchset b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.5.0.patchset new file mode 100644 index 000000000..ef088afc1 --- /dev/null +++ b/dev-qt/qt6-multimedia/patches/qt6_multimedia-6.5.0.patchset @@ -0,0 +1,469 @@ +From 79f179d950a03ae20ada90d57d328985962a13a8 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Tue, 4 Apr 2023 10:29:49 +1000 +Subject: Enable OpenAL (wasm) audio backend for Haiku + + +diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt +index d46d783..b0d600d 100644 +--- a/src/multimedia/CMakeLists.txt ++++ b/src/multimedia/CMakeLists.txt +@@ -220,7 +220,7 @@ qt_internal_extend_target(Multimedia CONDITION QT_FEATURE_wmf + ksuser + ) + +-qt_internal_extend_target(Multimedia CONDITION WASM ++qt_internal_extend_target(Multimedia CONDITION WASM OR HAIKU + SOURCES + wasm/qwasmmediadevices.cpp wasm/qwasmmediadevices_p.h + wasm/qwasmaudiosource.cpp wasm/qwasmaudiosource_p.h +diff --git a/src/multimedia/configure.cmake b/src/multimedia/configure.cmake +index 7fdb0af..eea89c9 100644 +--- a/src/multimedia/configure.cmake ++++ b/src/multimedia/configure.cmake +@@ -76,7 +76,7 @@ qt_feature("ffmpeg" PRIVATE + LABEL "FFmpeg" + ENABLE INPUT_ffmpeg STREQUAL 'yes' + DISABLE INPUT_ffmpeg STREQUAL 'no' +- CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR QT_FEATURE_pulseaudio) ++ CONDITION FFmpeg_FOUND AND (APPLE OR WIN32 OR ANDROID OR QNX OR HAIKU OR QT_FEATURE_pulseaudio) + ) + qt_feature("alsa" PUBLIC PRIVATE + LABEL "ALSA (experimental)" +@@ -203,5 +203,5 @@ qt_configure_end_summary_section() # end of "Qt Multimedia" section + qt_configure_add_report_entry( + TYPE WARNING + MESSAGE "No backend for low level audio found." +- CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM ++ CONDITION NOT QT_FEATURE_alsa AND NOT QT_FEATURE_pulseaudio AND NOT QT_FEATURE_mmrenderer AND NOT QT_FEATURE_coreaudio AND NOT QT_FEATURE_wmsdk AND NOT ANDROID AND NOT WASM AND NOT HAIKU + ) +diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp +index 03f1af7..2404486 100644 +--- a/src/multimedia/platform/qplatformmediadevices.cpp ++++ b/src/multimedia/platform/qplatformmediadevices.cpp +@@ -23,7 +23,7 @@ + #include + #elif defined(Q_OS_QNX) + #include +-#elif defined(Q_OS_WASM) ++#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) + #include + #endif + +@@ -64,7 +64,7 @@ QPlatformMediaDevices *QPlatformMediaDevices::instance() + devicesHolder.nativeInstance = new QPulseAudioMediaDevices; + #elif defined(Q_OS_QNX) + devicesHolder.nativeInstance = new QQnxMediaDevices; +-#elif defined(Q_OS_WASM) ++#elif defined(Q_OS_WASM) || defined(Q_OS_HAIKU) + devicesHolder.nativeInstance = new QWasmMediaDevices; + #else + devicesHolder.nativeInstance = new QPlatformMediaDevices; +diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp +index c87a0ad..3835ac2 100644 +--- a/src/multimedia/wasm/qwasmaudiodevice.cpp ++++ b/src/multimedia/wasm/qwasmaudiodevice.cpp +@@ -2,9 +2,11 @@ + // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + + #include "qwasmaudiodevice_p.h" ++#ifndef Q_OS_HAIKU + #include + #include + #include ++#endif + + #include + #include +@@ -35,6 +37,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is + // FIXME: firefox + // An AudioContext was prevented from starting automatically. + // It must be created or resumed after a user gesture on the page. ++#ifndef Q_OS_HAIKU + emscripten::val audioContext = emscripten::val::global("window")["AudioContext"].new_(); + if (audioContext == emscripten::val::undefined()) + audioContext = emscripten::val::global("window")["webkitAudioContext"].new_(); +@@ -45,6 +48,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is + audioContext.call("close"); + preferredFormat.setSampleRate(sRate); + } ++#endif + + auto f = QAudioFormat::Float; + +diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp +index 4c698f3..35b8218 100644 +--- a/src/multimedia/wasm/qwasmaudiosink.cpp ++++ b/src/multimedia/wasm/qwasmaudiosink.cpp +@@ -4,7 +4,9 @@ + #include "qwasmaudiosink_p.h" + + ++#ifndef Q_OS_HAIKU + #include ++#endif + #include + #include + #include +@@ -212,7 +214,7 @@ void QWasmAudioSink::resume() + alSourcePlay(aldata->source); + } + +-int QWasmAudioSink::bytesFree() const ++qsizetype QWasmAudioSink::bytesFree() const + { + int processed; + alGetSourcei(aldata->source, AL_BUFFERS_PROCESSED, &processed); +@@ -220,7 +222,7 @@ int QWasmAudioSink::bytesFree() const + + processed) : 0; + } + +-void QWasmAudioSink::setBufferSize(int value) ++void QWasmAudioSink::setBufferSize(qsizetype value) + { + if (m_running) + return; +@@ -228,7 +230,7 @@ void QWasmAudioSink::setBufferSize(int value) + m_bufferSize = value; + } + +-int QWasmAudioSink::bufferSize() const ++qsizetype QWasmAudioSink::bufferSize() const + { + return m_bufferSize; + } +diff --git a/src/multimedia/wasm/qwasmaudiosink_p.h b/src/multimedia/wasm/qwasmaudiosink_p.h +index ec703c8..975b7f6 100644 +--- a/src/multimedia/wasm/qwasmaudiosink_p.h ++++ b/src/multimedia/wasm/qwasmaudiosink_p.h +@@ -70,9 +70,9 @@ public: + void reset() override; + void suspend() override; + void resume() override; +- int bytesFree() const override; +- void setBufferSize(int value) override; +- int bufferSize() const override; ++ qsizetype bytesFree() const override; ++ void setBufferSize(qsizetype value) override; ++ qsizetype bufferSize() const override; + qint64 processedUSecs() const override; + QAudio::Error error() const override; + QAudio::State state() const override; +diff --git a/src/multimedia/wasm/qwasmaudiosource.cpp b/src/multimedia/wasm/qwasmaudiosource.cpp +index 9f51d70..365d502 100644 +--- a/src/multimedia/wasm/qwasmaudiosource.cpp ++++ b/src/multimedia/wasm/qwasmaudiosource.cpp +@@ -3,7 +3,10 @@ + + #include "qwasmaudiosource_p.h" + ++#ifndef Q_OS_HAIKU + #include ++#endif ++ + #include + #include + #include +@@ -217,7 +220,7 @@ void QWasmAudioSource::resume() + alcCaptureStart(aldata->device); + } + +-int QWasmAudioSource::bytesReady() const ++qsizetype QWasmAudioSource::bytesReady() const + { + if (!m_running) + return 0; +@@ -226,14 +229,14 @@ int QWasmAudioSource::bytesReady() const + return m_format.bytesForFrames(samples); + } + +-void QWasmAudioSource::setBufferSize(int value) ++void QWasmAudioSource::setBufferSize(qsizetype value) + { + if (!m_running) + return; + m_bufferSize = value; + } + +-int QWasmAudioSource::bufferSize() const ++qsizetype QWasmAudioSource::bufferSize() const + { + return m_bufferSize; + } +diff --git a/src/multimedia/wasm/qwasmaudiosource_p.h b/src/multimedia/wasm/qwasmaudiosource_p.h +index 41faa34..7a306d9 100644 +--- a/src/multimedia/wasm/qwasmaudiosource_p.h ++++ b/src/multimedia/wasm/qwasmaudiosource_p.h +@@ -55,9 +55,9 @@ public: + void reset() override; + void suspend() override; + void resume() override; +- int bytesReady() const override; +- void setBufferSize(int value) override; +- int bufferSize() const override; ++ qsizetype bytesReady() const override; ++ void setBufferSize(qsizetype value) override; ++ qsizetype bufferSize() const override; + qint64 processedUSecs() const override; + QAudio::Error error() const override; + QAudio::State state() const override; +-- +2.37.3 + + +From f1752f9116ca1dc25180d23202818bbf21f9966f Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sat, 8 Apr 2023 00:33:47 +1000 +Subject: Improve openal backend for Haiku + + +diff --git a/src/multimedia/wasm/qwasmaudiodevice.cpp b/src/multimedia/wasm/qwasmaudiodevice.cpp +index 3835ac2..0b9c806 100644 +--- a/src/multimedia/wasm/qwasmaudiodevice.cpp ++++ b/src/multimedia/wasm/qwasmaudiodevice.cpp +@@ -20,7 +20,7 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is + + isDefault = isDef; + minimumChannelCount = 1; +- maximumChannelCount = 2; ++ maximumChannelCount = 8; + minimumSampleRate = 8000; + maximumSampleRate = 96000; // js AudioContext max according to docs + +@@ -48,6 +48,8 @@ QWasmAudioDevice::QWasmAudioDevice(const char *device, const char *desc, bool is + audioContext.call("close"); + preferredFormat.setSampleRate(sRate); + } ++#else ++ preferredFormat.setSampleRate(48000); + #endif + + auto f = QAudioFormat::Float; +diff --git a/src/multimedia/wasm/qwasmaudiosink.cpp b/src/multimedia/wasm/qwasmaudiosink.cpp +index 35b8218..cf73873 100644 +--- a/src/multimedia/wasm/qwasmaudiosink.cpp ++++ b/src/multimedia/wasm/qwasmaudiosink.cpp +@@ -8,16 +8,19 @@ + #include + #endif + #include ++#include + #include + #include + #include + #include + ++#ifndef Q_OS_HAIKU + // non native al formats (AL_EXT_float32) + #define AL_FORMAT_MONO_FLOAT32 0x10010 + #define AL_FORMAT_STEREO_FLOAT32 0x10011 ++#endif + +-constexpr unsigned int DEFAULT_BUFFER_DURATION = 50'000; ++constexpr unsigned int DEFAULT_BUFFER_DURATION = 6'000; + + class ALData { + public: +@@ -99,6 +102,18 @@ void QWasmAudioSink::start(bool mode) + case 2: + aldata->format = AL_FORMAT_STEREO8; + break; ++ case 4: ++ aldata->format = AL_FORMAT_QUAD8; ++ break; ++ case 6: ++ aldata->format = AL_FORMAT_51CHN8; ++ break; ++ case 7: ++ aldata->format = AL_FORMAT_61CHN8; ++ break; ++ case 8: ++ aldata->format = AL_FORMAT_71CHN8; ++ break; + default: + return formatError(); + } +@@ -111,6 +126,18 @@ void QWasmAudioSink::start(bool mode) + case 2: + aldata->format = AL_FORMAT_STEREO16; + break; ++ case 4: ++ aldata->format = AL_FORMAT_QUAD16; ++ break; ++ case 6: ++ aldata->format = AL_FORMAT_51CHN16; ++ break; ++ case 7: ++ aldata->format = AL_FORMAT_61CHN16; ++ break; ++ case 8: ++ aldata->format = AL_FORMAT_71CHN16; ++ break; + default: + return formatError(); + } +@@ -123,6 +150,18 @@ void QWasmAudioSink::start(bool mode) + case 2: + aldata->format = AL_FORMAT_STEREO_FLOAT32; + break; ++ case 4: ++ aldata->format = AL_FORMAT_QUAD16; ++ break; ++ case 6: ++ aldata->format = AL_FORMAT_51CHN32; ++ break; ++ case 7: ++ aldata->format = AL_FORMAT_61CHN32; ++ break; ++ case 8: ++ aldata->format = AL_FORMAT_71CHN32; ++ break; + default: + return formatError(); + } +diff --git a/src/multimedia/wasm/qwasmmediadevices.cpp b/src/multimedia/wasm/qwasmmediadevices.cpp +index 189e8c5..35c683b 100644 +--- a/src/multimedia/wasm/qwasmmediadevices.cpp ++++ b/src/multimedia/wasm/qwasmmediadevices.cpp +@@ -64,6 +64,7 @@ QPlatformAudioSink *QWasmMediaDevices::createAudioSink(const QAudioDevice &devic + + void QWasmMediaDevices::getMediaDevices() + { ++#ifndef Q_OS_HAIKU + emscripten::val navigator = emscripten::val::global("navigator"); + m_jsMediaDevicesInterface = navigator["mediaDevices"]; + +@@ -225,6 +226,7 @@ void QWasmMediaDevices::getMediaDevices() + QStringLiteral("enumerateDevices"), + std::move(enumerateDevicesCallback)); + }); ++#endif + } + + void QWasmMediaDevices::getOpenALAudioDevices() +@@ -234,20 +236,34 @@ void QWasmMediaDevices::getOpenALAudioDevices() + auto capture = alcGetString(nullptr, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); + // present even if there is no capture device + if (capture && !m_audioOutputs.contains(capture)) { ++#ifndef Q_OS_HAIKU + m_audioInputs.insert(capture, + (new QWasmAudioDevice(capture, "WebAssembly audio capture device", + true, QAudioDevice::Input)) + ->create()); ++#else ++ m_audioInputs.insert(capture, ++ (new QWasmAudioDevice(capture, "Haiku audio capture device", ++ true, QAudioDevice::Input)) ++ ->create()); ++#endif + emit audioInputsChanged(); + } + + auto playback = alcGetString(nullptr, ALC_DEFAULT_DEVICE_SPECIFIER); + // present even if there is no playback device + if (playback && !m_audioOutputs.contains(capture)) { ++#ifndef Q_OS_HAIKU + m_audioOutputs.insert(playback, + (new QWasmAudioDevice(playback, "WebAssembly audio playback device", + true, QAudioDevice::Output)) + ->create()); ++#else ++ m_audioOutputs.insert(playback, ++ (new QWasmAudioDevice(playback, "Haiku audio playback device", ++ true, QAudioDevice::Output)) ++ ->create()); ++#endif + emit audioOutputsChanged(); + } + } +diff --git a/src/multimedia/wasm/qwasmmediadevices_p.h b/src/multimedia/wasm/qwasmmediadevices_p.h +index dfd511e..a761db9 100644 +--- a/src/multimedia/wasm/qwasmmediadevices_p.h ++++ b/src/multimedia/wasm/qwasmmediadevices_p.h +@@ -19,16 +19,20 @@ + + #include + ++#ifndef Q_OS_HAIKU + #include ++#endif + #include + #include + #include + #include + #include + ++#ifndef Q_OS_HAIKU + #include + #include + #include ++#endif + #include + QT_BEGIN_NAMESPACE + +@@ -72,13 +76,16 @@ private: + QMap m_audioInputs; + QMap m_cameraDevices; + +- ++#ifndef Q_OS_HAIKU + std::unique_ptr m_deviceChangedCallback; ++#endif + + bool m_videoInputsAdded = false; + bool m_audioInputsAdded = false; + bool m_audioOutputsAdded = false; ++#ifndef Q_OS_HAIKU + emscripten::val m_jsMediaDevicesInterface = emscripten::val::undefined(); ++#endif + }; + + QT_END_NAMESPACE +-- +2.37.3 + + +From 050fcdead0ce8e1fc5b40df3bdf85b75753d0ef0 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sat, 8 Apr 2023 00:35:43 +1000 +Subject: Fix encode url for local files + + +diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +index eb4f35b..0466bdc 100644 +--- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp ++++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +@@ -117,7 +117,7 @@ MediaDataHolder::recreateAVFormatContext(const QUrl &media, QIODevice *stream) + { + *this = MediaDataHolder{}; + +- QByteArray url = media.toEncoded(QUrl::PreferLocalFile); ++ QByteArray url = media.isLocalFile() ? QFile::encodeName(media.toString(QUrl::PreferLocalFile)) : media.toEncoded(); + + AVFormatContext *context = nullptr; + +-- +2.37.3 + + +From 91c081a8ee0efa7a3da40a91fdf37340af6d7e38 Mon Sep 17 00:00:00 2001 +From: Gerasim Troeglazov <3dEyes@gmail.com> +Date: Sat, 8 Apr 2023 11:45:50 +1000 +Subject: Add missing include + + +diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +index 0466bdc..7ccd386 100644 +--- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp ++++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegmediadataholder.cpp +@@ -7,6 +7,7 @@ + #include "qffmpegmediaformatinfo_p.h" + #include "qiodevice.h" + #include "qdatetime.h" ++#include "qfile.h" + #include "qloggingcategory.h" + + #include +-- +2.37.3 + diff --git a/dev-qt/qt6-multimedia/qt6_multimedia-6.4.0.recipe b/dev-qt/qt6-multimedia/qt6_multimedia-6.5.0.recipe similarity index 70% rename from dev-qt/qt6-multimedia/qt6_multimedia-6.4.0.recipe rename to dev-qt/qt6-multimedia/qt6_multimedia-6.5.0.recipe index 1a73a3e38..fa07c5040 100644 --- a/dev-qt/qt6-multimedia/qt6_multimedia-6.4.0.recipe +++ b/dev-qt/qt6-multimedia/qt6_multimedia-6.5.0.recipe @@ -4,13 +4,13 @@ used for developing software with a graphical user interface, and also used \ for developing non-GUI programs such as command-line tools and consoles for \ servers." HOMEPAGE="https://qt.io/" -COPYRIGHT="2015-2022 The Qt Company Ltd." +COPYRIGHT="2015-2023 The Qt Company Ltd." LICENSE="GNU LGPL v2.1 GNU LGPL v3 GNU FDL v1" -REVISION="2" +REVISION="1" SOURCE_URI="https://download.qt.io/official_releases/qt/${portVersion%.*}/$portVersion/submodules/qtmultimedia-everywhere-src-$portVersion.tar.xz" -CHECKSUM_SHA256="e82e8e847cae2a951a11db05b6d10a22b21e3a1d72e06a7781cce4bd197e796f" +CHECKSUM_SHA256="9480d0c73abdd01aec4899e340938cec046a3f404b9f9ed945288be574dca146" SOURCE_DIR="qtmultimedia-everywhere-src-$portVersion" PATCHES="qt6_multimedia-$portVersion.patchset" @@ -26,20 +26,9 @@ PROVIDES=" " REQUIRES=" haiku$secondaryArchSuffix + lib:libavcodec$secondaryArchSuffix + lib:libavformat$secondaryArchSuffix lib:libgl$secondaryArchSuffix - lib:libglib_2.0$secondaryArchSuffix - lib:libgobject_2.0$secondaryArchSuffix - lib:libgstapp_1.0$secondaryArchSuffix - lib:libgstaudio_1.0$secondaryArchSuffix - lib:libgstallocators_1.0$secondaryArchSuffix - lib:libgstbadaudio_1.0$secondaryArchSuffix - lib:libgstbase_1.0$secondaryArchSuffix - lib:libgstpbutils_1.0$secondaryArchSuffix - lib:libgstreamer_1.0$secondaryArchSuffix - lib:libgsttag_1.0$secondaryArchSuffix - lib:libgstvideo_1.0$secondaryArchSuffix - lib:libgstphotography_1.0$secondaryArchSuffix - lib:libgthread_2.0$secondaryArchSuffix lib:libintl$secondaryArchSuffix lib:libopenal$secondaryArchSuffix lib:libQt6Core$secondaryArchSuffix @@ -49,6 +38,7 @@ REQUIRES=" lib:libQt6QmlModels$secondaryArchSuffix lib:libQt6ShaderTools$secondaryArchSuffix lib:libQt6Svg$secondaryArchSuffix + lib:libvulkan$secondaryArchSuffix lib:libz$secondaryArchSuffix " @@ -68,20 +58,9 @@ REQUIRES_devel=" BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel devel:libcrypto$secondaryArchSuffix + devel:libavcodec$secondaryArchSuffix >= 59 devel:libgl$secondaryArchSuffix - devel:libglib_2.0$secondaryArchSuffix - devel:libgobject_2.0$secondaryArchSuffix - devel:libgstapp_1.0$secondaryArchSuffix - devel:libgstaudio_1.0$secondaryArchSuffix - devel:libgstallocators_1.0$secondaryArchSuffix - devel:libgstbadaudio_1.0$secondaryArchSuffix - devel:libgstbase_1.0$secondaryArchSuffix - devel:libgstpbutils_1.0$secondaryArchSuffix - devel:libgstreamer_1.0$secondaryArchSuffix - devel:libgstvideo_1.0$secondaryArchSuffix - devel:libgstphotography_1.0$secondaryArchSuffix devel:libopenal$secondaryArchSuffix - devel:liborc_0.4$secondaryArchSuffix devel:libQt6Core$secondaryArchSuffix devel:libQt6Gui$secondaryArchSuffix devel:libQt6Qml$secondaryArchSuffix @@ -90,6 +69,7 @@ BUILD_REQUIRES=" devel:libQt6ShaderTools$secondaryArchSuffix devel:libQt6Svg$secondaryArchSuffix devel:libssl$secondaryArchSuffix + devel:libvulkan$secondaryArchSuffix devel:libz$secondaryArchSuffix " BUILD_PREREQUIRES=" @@ -102,7 +82,7 @@ BUILD_PREREQUIRES=" cmd:ninja cmd:perl cmd:pkg_config$secondaryArchSuffix - cmd:python3.7 + cmd:python3 cmd:sed cmd:xargs " @@ -118,18 +98,29 @@ BUILD() cmake -B build -S $sourceDir -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS=-fPIC + -DCMAKE_CXX_FLAGS=-fPIC \ + -DFEATURE_linux_dmabuf=OFF find -name cmake_install.cmake -exec sed -i "s|set(CMAKE_INSTALL_PREFIX.*|set(CMAKE_INSTALL_PREFIX \"$prefix\")|" {} \; - ninja -C build $jobArgs + ninja -v -C build $jobArgs } INSTALL() { ninja -C build install - prepareInstalledDevelLibs libQt6Multimedia libQt6MultimediaQuick libQt6MultimediaWidgets libQt6SpatialAudio libQt6BundledResonanceAudio + prepareInstalledDevelLibs \ + libQt6Multimedia \ + libQt6MultimediaQuick \ + libQt6MultimediaWidgets \ + libQt6SpatialAudio \ + libQt6BundledResonanceAudio + + # fix pkgconfig files + fixPkgconfig + sed -i "s|includedir=.*|includedir=$includeDir/Qt6|" \ + $developLibDir/pkgconfig/*.pc cd $libDir for i in lib*.so.6.*;do