Ladybird: Do not require Qt6 Multimedia if PulseAudio is available

If PulseAudio is available, the Qt6 audio plugin will never be used. So
let's remove it from the build.

Note that on macOS, the Qt6 audio plugin will be used if the Qt chrome
is enabled. Otherwise, Audio Unit will be used for the AppKit chrome.
This commit is contained in:
Timothy Flynn 2023-11-02 13:53:38 -04:00 committed by Tim Flynn
parent b98864e022
commit bbdd624d50
Notes: sideshowbarker 2024-07-17 03:19:14 +09:00
4 changed files with 23 additions and 8 deletions

View file

@ -4,6 +4,8 @@
Qt6 development packages and a C++20 capable compiler are required. g++-12 or clang-15 are required at a minimum for c++20 support. Qt6 development packages and a C++20 capable compiler are required. g++-12 or clang-15 are required at a minimum for c++20 support.
NOTE: In all of the below lists of packages, the Qt6 multimedia package is not needed if your Linux system supports PulseAudio.
On Debian/Ubuntu required packages include, but are not limited to: On Debian/Ubuntu required packages include, but are not limited to:
``` ```

View file

@ -95,7 +95,7 @@ if (ENABLE_QT)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON) set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOUIC ON)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network Multimedia) find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network)
elseif (APPLE) elseif (APPLE)
find_library(COCOA_LIBRARY Cocoa) find_library(COCOA_LIBRARY Cocoa)
endif() endif()

View file

@ -16,8 +16,6 @@ set(WEBCONTENT_SOURCES
if (ENABLE_QT) if (ENABLE_QT)
qt_add_executable(WebContent ${WEBCONTENT_SOURCES}) qt_add_executable(WebContent ${WEBCONTENT_SOURCES})
target_sources(WebContent PRIVATE target_sources(WebContent PRIVATE
../Qt/AudioCodecPluginQt.cpp
../Qt/AudioThread.cpp
../Qt/EventLoopImplementationQt.cpp ../Qt/EventLoopImplementationQt.cpp
../Qt/EventLoopImplementationQtEventTarget.cpp ../Qt/EventLoopImplementationQtEventTarget.cpp
../Qt/RequestManagerQt.cpp ../Qt/RequestManagerQt.cpp
@ -27,8 +25,20 @@ if (ENABLE_QT)
../Qt/WebSocketImplQt.cpp ../Qt/WebSocketImplQt.cpp
main.cpp main.cpp
) )
target_link_libraries(WebContent PRIVATE Qt::Core Qt::Network Qt::Multimedia) target_link_libraries(WebContent PRIVATE Qt::Core Qt::Network)
target_compile_definitions(WebContent PRIVATE HAVE_QT=1) target_compile_definitions(WebContent PRIVATE HAVE_QT=1)
if (NOT HAVE_PULSEAUDIO)
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_sources(WebContent PRIVATE
../Qt/AudioCodecPluginQt.cpp
../Qt/AudioThread.cpp
)
target_link_libraries(WebContent PRIVATE Qt::Multimedia)
target_compile_definitions(WebContent PRIVATE HAVE_QT_MULTIMEDIA=1)
endif()
else() else()
set(LIB_TYPE STATIC) set(LIB_TYPE STATIC)
if (ANDROID) if (ANDROID)

View file

@ -34,11 +34,14 @@
#include <WebContent/WebDriverConnection.h> #include <WebContent/WebDriverConnection.h>
#if defined(HAVE_QT) #if defined(HAVE_QT)
# include <Ladybird/Qt/AudioCodecPluginQt.h>
# include <Ladybird/Qt/EventLoopImplementationQt.h> # include <Ladybird/Qt/EventLoopImplementationQt.h>
# include <Ladybird/Qt/RequestManagerQt.h> # include <Ladybird/Qt/RequestManagerQt.h>
# include <Ladybird/Qt/WebSocketClientManagerQt.h> # include <Ladybird/Qt/WebSocketClientManagerQt.h>
# include <QCoreApplication> # include <QCoreApplication>
# if defined(HAVE_QT_MULTIMEDIA)
# include <Ladybird/Qt/AudioCodecPluginQt.h>
# endif
#endif #endif
static ErrorOr<void> load_content_filters(); static ErrorOr<void> load_content_filters();
@ -60,10 +63,10 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
Web::Platform::ImageCodecPlugin::install(*new Ladybird::ImageCodecPlugin); Web::Platform::ImageCodecPlugin::install(*new Ladybird::ImageCodecPlugin);
Web::Platform::AudioCodecPlugin::install_creation_hook([](auto loader) { Web::Platform::AudioCodecPlugin::install_creation_hook([](auto loader) {
#if defined(AK_OS_MACOS) || defined(HAVE_PULSEAUDIO) #if defined(HAVE_QT_MULTIMEDIA)
return Web::Platform::AudioCodecPluginAgnostic::create(move(loader));
#elif defined(HAVE_QT)
return Ladybird::AudioCodecPluginQt::create(move(loader)); return Ladybird::AudioCodecPluginQt::create(move(loader));
#elif defined(AK_OS_MACOS) || defined(HAVE_PULSEAUDIO)
return Web::Platform::AudioCodecPluginAgnostic::create(move(loader));
#else #else
(void)loader; (void)loader;
return Error::from_string_literal("Don't know how to initialize audio in this configuration!"); return Error::from_string_literal("Don't know how to initialize audio in this configuration!");