summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Kernel/Devices/Audio/SB16.cpp4
-rw-r--r--Kernel/Devices/DeviceManagement.cpp4
-rw-r--r--Kernel/Devices/DeviceManagement.h6
-rw-r--r--Kernel/init.cpp4
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()) {