diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2025-02-02 17:50:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-02 17:50:20 +0100 |
| commit | 017e0b56584e9b01ac231868a31d8bd9fdb27953 (patch) | |
| tree | 4a23db1d1c88a7ce9afed8ce7e7eabf89cb9cca7 /Source | |
| parent | 6a3a74508dca1d5da136d74a0941cb88b1ab0862 (diff) | |
| parent | d89e7c84fbd938dc9f2265363334ec46c4cb321f (diff) | |
Merge pull request #13306 from OatmealDome/cubeb-optional
CMakeLists: Add flag to disable Cubeb
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/AudioCommon/AudioCommon.cpp | 10 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/CMakeLists.txt | 18 | ||||
| -rw-r--r-- | Source/Core/AudioCommon/CubebStream.h | 5 | ||||
| -rw-r--r-- | Source/Core/Core/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | Source/Core/Core/HW/EXI/EXI_Device.cpp | 11 | ||||
| -rw-r--r-- | Source/VSProps/Base.Dolphin.props | 1 |
6 files changed, 44 insertions, 12 deletions
diff --git a/Source/Core/AudioCommon/AudioCommon.cpp b/Source/Core/AudioCommon/AudioCommon.cpp index d9fee4ef72..0a0aafd307 100644 --- a/Source/Core/AudioCommon/AudioCommon.cpp +++ b/Source/Core/AudioCommon/AudioCommon.cpp @@ -28,7 +28,7 @@ constexpr int AUDIO_VOLUME_MAX = 100; static std::unique_ptr<SoundStream> CreateSoundStreamForBackend(std::string_view backend) { - if (backend == BACKEND_CUBEB) + if (backend == BACKEND_CUBEB && CubebStream::IsValid()) return std::make_unique<CubebStream>(); else if (backend == BACKEND_OPENAL && OpenALStream::IsValid()) return std::make_unique<OpenALStream>(); @@ -100,10 +100,11 @@ std::string GetDefaultSoundBackend() #elif defined __linux__ if (AlsaSound::IsValid()) backend = BACKEND_ALSA; - else + else if (CubebStream::IsValid()) backend = BACKEND_CUBEB; #elif defined(__APPLE__) || defined(_WIN32) || defined(__OpenBSD__) - backend = BACKEND_CUBEB; + if (CubebStream::IsValid()) + backend = BACKEND_CUBEB; #endif return backend; } @@ -118,7 +119,8 @@ std::vector<std::string> GetSoundBackends() std::vector<std::string> backends; backends.emplace_back(BACKEND_NULLSOUND); - backends.emplace_back(BACKEND_CUBEB); + if (CubebStream::IsValid()) + backends.emplace_back(BACKEND_CUBEB); if (AlsaSound::IsValid()) backends.emplace_back(BACKEND_ALSA); if (PulseAudio::IsValid()) diff --git a/Source/Core/AudioCommon/CMakeLists.txt b/Source/Core/AudioCommon/CMakeLists.txt index 26dc443d90..d08a87247b 100644 --- a/Source/Core/AudioCommon/CMakeLists.txt +++ b/Source/Core/AudioCommon/CMakeLists.txt @@ -3,10 +3,7 @@ add_library(audiocommon AudioCommon.h AudioStretcher.cpp AudioStretcher.h - CubebStream.cpp CubebStream.h - CubebUtils.cpp - CubebUtils.h Enums.h Mixer.cpp Mixer.h @@ -18,6 +15,16 @@ add_library(audiocommon WaveFile.h ) +if(ENABLE_CUBEB) + message(STATUS "Cubeb found, enabling Cubeb sound backend") + target_sources(audiocommon PRIVATE + CubebStream.cpp + CubebUtils.cpp + CubebUtils.h + ) + target_link_libraries(audiocommon PRIVATE cubeb) +endif() + if(ANDROID) find_package(OpenSLES) if(OPENSLES_FOUND) @@ -83,10 +90,13 @@ PUBLIC common PRIVATE - cubeb::cubeb SoundTouch FreeSurround) +if(ENABLE_CUBEB) + target_link_libraries(audiocommon PRIVATE cubeb::cubeb) +endif() + if(MSVC) # Add precompiled header target_link_libraries(audiocommon PRIVATE use_pch) diff --git a/Source/Core/AudioCommon/CubebStream.h b/Source/Core/AudioCommon/CubebStream.h index 4b0c0e5eae..72d7d1c117 100644 --- a/Source/Core/AudioCommon/CubebStream.h +++ b/Source/Core/AudioCommon/CubebStream.h @@ -11,10 +11,13 @@ #include "AudioCommon/SoundStream.h" #include "Common/WorkQueueThread.h" +#ifdef HAVE_CUBEB #include <cubeb/cubeb.h> +#endif class CubebStream final : public SoundStream { +#ifdef HAVE_CUBEB public: CubebStream(); CubebStream(const CubebStream& other) = delete; @@ -25,6 +28,7 @@ public: bool Init() override; bool SetRunning(bool running) override; void SetVolume(int) override; + static bool IsValid() { return true; } private: bool m_stereo = false; @@ -43,4 +47,5 @@ private: static long DataCallback(cubeb_stream* stream, void* user_data, const void* /*input_buffer*/, void* output_buffer, long num_frames); static void StateCallback(cubeb_stream* stream, void* user_data, cubeb_state state); +#endif }; diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index 4704b340b2..33a97d05e7 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -213,8 +213,6 @@ add_library(core HW/EXI/EXI_DeviceIPL.h HW/EXI/EXI_DeviceMemoryCard.cpp HW/EXI/EXI_DeviceMemoryCard.h - HW/EXI/EXI_DeviceMic.cpp - HW/EXI/EXI_DeviceMic.h HW/EXI/EXI_DeviceModem.cpp HW/EXI/EXI_DeviceModem.h HW/EXI/EXI.cpp @@ -645,7 +643,6 @@ PUBLIC videosoftware PRIVATE - cubeb::cubeb FatFs fmt::fmt LZO::LZO @@ -668,6 +665,14 @@ elseif (ANDROID) ) endif() +if(ENABLE_CUBEB) + target_link_libraries(core PUBLIC cubeb) + target_sources(core PRIVATE + HW/EXI/EXI_DeviceMic.cpp + HW/EXI/EXI_DeviceMic.h + ) +endif() + if(TARGET LibUSB::LibUSB) target_link_libraries(core PUBLIC LibUSB::LibUSB) target_sources(core PRIVATE diff --git a/Source/Core/Core/HW/EXI/EXI_Device.cpp b/Source/Core/Core/HW/EXI/EXI_Device.cpp index 0d3ba0f8f9..6c416d5387 100644 --- a/Source/Core/Core/HW/EXI/EXI_Device.cpp +++ b/Source/Core/Core/HW/EXI/EXI_Device.cpp @@ -6,6 +6,7 @@ #include <memory> #include "Common/CommonTypes.h" +#include "Common/MsgHandler.h" #include "Core/HW/EXI/EXI_DeviceAD16.h" #include "Core/HW/EXI/EXI_DeviceAGP.h" #include "Core/HW/EXI/EXI_DeviceDummy.h" @@ -13,11 +14,14 @@ #include "Core/HW/EXI/EXI_DeviceGecko.h" #include "Core/HW/EXI/EXI_DeviceIPL.h" #include "Core/HW/EXI/EXI_DeviceMemoryCard.h" -#include "Core/HW/EXI/EXI_DeviceMic.h" #include "Core/HW/EXI/EXI_DeviceModem.h" #include "Core/HW/Memmap.h" #include "Core/System.h" +#ifdef HAVE_CUBEB +#include "Core/HW/EXI/EXI_DeviceMic.h" +#endif + namespace ExpansionInterface { IEXIDevice::IEXIDevice(Core::System& system) : m_system(system) @@ -131,7 +135,12 @@ std::unique_ptr<IEXIDevice> EXIDevice_Create(Core::System& system, const EXIDevi break; case EXIDeviceType::Microphone: +#ifdef HAVE_CUBEB result = std::make_unique<CEXIMic>(system, channel_num); +#else + PanicAlertFmtT("Dolphin was built with Cubeb disabled. The Microphone device cannot be used."); + result = std::make_unique<IEXIDevice>(system); +#endif break; case EXIDeviceType::Ethernet: diff --git a/Source/VSProps/Base.Dolphin.props b/Source/VSProps/Base.Dolphin.props index 6fadb08c3e..eb1d50a141 100644 --- a/Source/VSProps/Base.Dolphin.props +++ b/Source/VSProps/Base.Dolphin.props @@ -46,6 +46,7 @@ <PreprocessorDefinitions>HAVE_SDL2;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>USE_RETRO_ACHIEVEMENTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>RC_CLIENT_SUPPORTS_HASH;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PreprocessorDefinitions>HAVE_CUBEB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <!-- Warnings one may want to ignore when using Level4. 4201 nonstandard extension used : nameless struct/union |
