diff options
-rw-r--r-- | Kernel/Devices/Audio/SB16.cpp | 4 | ||||
-rw-r--r-- | Kernel/Devices/DeviceManagement.cpp | 4 | ||||
-rw-r--r-- | Kernel/Devices/DeviceManagement.h | 6 | ||||
-rw-r--r-- | Kernel/init.cpp | 4 |
4 files changed, 9 insertions, 9 deletions
diff --git a/Kernel/Devices/Audio/SB16.cpp b/Kernel/Devices/Audio/SB16.cpp index b515d5053a..e5bfef119d 100644 --- a/Kernel/Devices/Audio/SB16.cpp +++ b/Kernel/Devices/Audio/SB16.cpp @@ -84,7 +84,9 @@ UNMAP_AFTER_INIT RefPtr<SB16> SB16::try_detect_and_create() auto device_or_error = DeviceManagement::try_create_device<SB16>(); if (device_or_error.is_error()) return {}; - return device_or_error.release_value(); + auto device = device_or_error.release_value(); + DeviceManagement::the().attach_audio_device(device); + return device; } UNMAP_AFTER_INIT void SB16::initialize() diff --git a/Kernel/Devices/DeviceManagement.cpp b/Kernel/Devices/DeviceManagement.cpp index 7b1b409790..1b0bd26a45 100644 --- a/Kernel/Devices/DeviceManagement.cpp +++ b/Kernel/Devices/DeviceManagement.cpp @@ -22,9 +22,9 @@ UNMAP_AFTER_INIT void DeviceManagement::initialize() s_the.ensure_instance(); } -UNMAP_AFTER_INIT void DeviceManagement::attach_sb16_device(SB16 const& device) +UNMAP_AFTER_INIT void DeviceManagement::attach_audio_device(CharacterDevice const& device) { - m_sb16_device = device; + m_audio_devices.append(device); } UNMAP_AFTER_INIT void DeviceManagement::attach_console_device(ConsoleDevice const& device) diff --git a/Kernel/Devices/DeviceManagement.h b/Kernel/Devices/DeviceManagement.h index cc4e163ab4..36069dfd66 100644 --- a/Kernel/Devices/DeviceManagement.h +++ b/Kernel/Devices/DeviceManagement.h @@ -15,7 +15,7 @@ #include <AK/Types.h> #include <Kernel/API/TimePage.h> #include <Kernel/Arch/RegisterState.h> -#include <Kernel/Devices/Audio/SB16.h> +#include <Kernel/Devices/CharacterDevice.h> #include <Kernel/Devices/ConsoleDevice.h> #include <Kernel/Devices/Device.h> #include <Kernel/Devices/NullDevice.h> @@ -36,7 +36,7 @@ public: void attach_console_device(ConsoleDevice const&); // FIXME: Once we have a singleton for managing many sound cards, remove this from here - void attach_sb16_device(SB16 const&); + void attach_audio_device(CharacterDevice const&); void after_inserting_device(Badge<Device>, Device&); void before_device_removal(Badge<Device>, Device&); @@ -62,7 +62,7 @@ private: RefPtr<NullDevice> m_null_device; RefPtr<ConsoleDevice> m_console_device; // FIXME: Once we have a singleton for managing many sound cards, remove this from here - RefPtr<SB16> m_sb16_device; + NonnullRefPtrVector<CharacterDevice, 1> m_audio_devices; MutexProtected<HashMap<u32, Device*>> m_devices; }; diff --git a/Kernel/init.cpp b/Kernel/init.cpp index ddc2d7d86d..32a504d2e9 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -318,9 +318,7 @@ void init_stage2(void*) (void)RandomDevice::must_create().leak_ref(); PTYMultiplexer::initialize(); - // FIXME: Once we have a singleton for managing many sound cards, remove this from here - if (auto device = SB16::try_detect_and_create(); !!device) - DeviceManagement::the().attach_sb16_device(*device); + SB16::try_detect_and_create(); StorageManagement::the().initialize(kernel_command_line().root_device(), kernel_command_line().is_force_pio()); if (VirtualFileSystem::the().mount_root(StorageManagement::the().root_filesystem()).is_error()) { |