Merge remote-tracking branch 'origin/master' into typos3
This commit is contained in:
		| @@ -10,6 +10,8 @@ | ||||
| #include "core/core_timing.h" | ||||
| #include "core/memory.h" | ||||
|  | ||||
| #include "core/hle/kernel/k_process.h" | ||||
|  | ||||
| namespace AudioCore { | ||||
|  | ||||
| using namespace std::literals; | ||||
| @@ -25,7 +27,7 @@ DeviceSession::~DeviceSession() { | ||||
| } | ||||
|  | ||||
| Result DeviceSession::Initialize(std::string_view name_, SampleFormat sample_format_, | ||||
|                                  u16 channel_count_, size_t session_id_, u32 handle_, | ||||
|                                  u16 channel_count_, size_t session_id_, Kernel::KProcess* handle_, | ||||
|                                  u64 applet_resource_user_id_, Sink::StreamType type_) { | ||||
|     if (stream) { | ||||
|         Finalize(); | ||||
| @@ -36,6 +38,7 @@ Result DeviceSession::Initialize(std::string_view name_, SampleFormat sample_for | ||||
|     channel_count = channel_count_; | ||||
|     session_id = session_id_; | ||||
|     handle = handle_; | ||||
|     handle->Open(); | ||||
|     applet_resource_user_id = applet_resource_user_id_; | ||||
|  | ||||
|     if (type == Sink::StreamType::In) { | ||||
| @@ -54,6 +57,11 @@ void DeviceSession::Finalize() { | ||||
|         sink->CloseStream(stream); | ||||
|         stream = nullptr; | ||||
|     } | ||||
|  | ||||
|     if (handle) { | ||||
|         handle->Close(); | ||||
|         handle = nullptr; | ||||
|     } | ||||
| } | ||||
|  | ||||
| void DeviceSession::Start() { | ||||
| @@ -91,7 +99,7 @@ void DeviceSession::AppendBuffers(std::span<const AudioBuffer> buffers) { | ||||
|             stream->AppendBuffer(new_buffer, tmp_samples); | ||||
|         } else { | ||||
|             Core::Memory::CpuGuestMemory<s16, Core::Memory::GuestMemoryFlags::UnsafeRead> samples( | ||||
|                 system.ApplicationMemory(), buffer.samples, buffer.size / sizeof(s16)); | ||||
|                 handle->GetMemory(), buffer.samples, buffer.size / sizeof(s16)); | ||||
|             stream->AppendBuffer(new_buffer, samples); | ||||
|         } | ||||
|     } | ||||
| @@ -100,7 +108,7 @@ void DeviceSession::AppendBuffers(std::span<const AudioBuffer> buffers) { | ||||
| void DeviceSession::ReleaseBuffer(const AudioBuffer& buffer) const { | ||||
|     if (type == Sink::StreamType::In) { | ||||
|         auto samples{stream->ReleaseBuffer(buffer.size / sizeof(s16))}; | ||||
|         system.ApplicationMemory().WriteBlockUnsafe(buffer.samples, samples.data(), buffer.size); | ||||
|         handle->GetMemory().WriteBlockUnsafe(buffer.samples, samples.data(), buffer.size); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -20,6 +20,10 @@ struct EventType; | ||||
| } // namespace Timing | ||||
| } // namespace Core | ||||
|  | ||||
| namespace Kernel { | ||||
| class KProcess; | ||||
| } // namespace Kernel | ||||
|  | ||||
| namespace AudioCore { | ||||
|  | ||||
| namespace Sink { | ||||
| @@ -44,13 +48,13 @@ public: | ||||
|      * @param sample_format           - Sample format for this device's output. | ||||
|      * @param channel_count           - Number of channels for this device (2 or 6). | ||||
|      * @param session_id              - This session's id. | ||||
|      * @param handle                  - Handle for this device session (unused). | ||||
|      * @param handle                  - Process handle for this device session. | ||||
|      * @param applet_resource_user_id - Applet resource user id for this device session (unused). | ||||
|      * @param type                    - Type of this stream (Render, In, Out). | ||||
|      * @return Result code for this call. | ||||
|      */ | ||||
|     Result Initialize(std::string_view name, SampleFormat sample_format, u16 channel_count, | ||||
|                       size_t session_id, u32 handle, u64 applet_resource_user_id, | ||||
|                       size_t session_id, Kernel::KProcess* handle, u64 applet_resource_user_id, | ||||
|                       Sink::StreamType type); | ||||
|  | ||||
|     /** | ||||
| @@ -137,8 +141,8 @@ private: | ||||
|     u16 channel_count{}; | ||||
|     /// Session id of this device session | ||||
|     size_t session_id{}; | ||||
|     /// Handle of this device session | ||||
|     u32 handle{}; | ||||
|     /// Process handle of device memory owner | ||||
|     Kernel::KProcess* handle{}; | ||||
|     /// Applet resource user id of this device session | ||||
|     u64 applet_resource_user_id{}; | ||||
|     /// Total number of samples played by this device session | ||||
|   | ||||
| @@ -57,7 +57,7 @@ Result System::IsConfigValid(const std::string_view device_name, | ||||
| } | ||||
|  | ||||
| Result System::Initialize(std::string device_name, const AudioInParameter& in_params, | ||||
|                           const u32 handle_, const u64 applet_resource_user_id_) { | ||||
|                           Kernel::KProcess* handle_, const u64 applet_resource_user_id_) { | ||||
|     auto result{IsConfigValid(device_name, in_params)}; | ||||
|     if (result.IsError()) { | ||||
|         return result; | ||||
|   | ||||
| @@ -19,7 +19,8 @@ class System; | ||||
|  | ||||
| namespace Kernel { | ||||
| class KEvent; | ||||
| } | ||||
| class KProcess; | ||||
| } // namespace Kernel | ||||
|  | ||||
| namespace AudioCore::AudioIn { | ||||
|  | ||||
| @@ -93,12 +94,12 @@ public: | ||||
|      * | ||||
|      * @param device_name             - The name of the requested input device. | ||||
|      * @param in_params               - Input parameters, see AudioInParameter. | ||||
|      * @param handle                  - Unused. | ||||
|      * @param handle                  - Process handle. | ||||
|      * @param applet_resource_user_id - Unused. | ||||
|      * @return Result code. | ||||
|      */ | ||||
|     Result Initialize(std::string device_name, const AudioInParameter& in_params, u32 handle, | ||||
|                       u64 applet_resource_user_id); | ||||
|     Result Initialize(std::string device_name, const AudioInParameter& in_params, | ||||
|                       Kernel::KProcess* handle, u64 applet_resource_user_id); | ||||
|  | ||||
|     /** | ||||
|      * Start this system. | ||||
| @@ -244,8 +245,8 @@ public: | ||||
| private: | ||||
|     /// Core system | ||||
|     Core::System& system; | ||||
|     /// (Unused) | ||||
|     u32 handle{}; | ||||
|     /// Process handle | ||||
|     Kernel::KProcess* handle{}; | ||||
|     /// (Unused) | ||||
|     u64 applet_resource_user_id{}; | ||||
|     /// Buffer event, signalled when a buffer is ready | ||||
|   | ||||
| @@ -48,8 +48,8 @@ Result System::IsConfigValid(std::string_view device_name, | ||||
|     return Service::Audio::ResultInvalidChannelCount; | ||||
| } | ||||
|  | ||||
| Result System::Initialize(std::string device_name, const AudioOutParameter& in_params, u32 handle_, | ||||
|                           u64 applet_resource_user_id_) { | ||||
| Result System::Initialize(std::string device_name, const AudioOutParameter& in_params, | ||||
|                           Kernel::KProcess* handle_, u64 applet_resource_user_id_) { | ||||
|     auto result = IsConfigValid(device_name, in_params); | ||||
|     if (result.IsError()) { | ||||
|         return result; | ||||
|   | ||||
| @@ -19,7 +19,8 @@ class System; | ||||
|  | ||||
| namespace Kernel { | ||||
| class KEvent; | ||||
| } | ||||
| class KProcess; | ||||
| } // namespace Kernel | ||||
|  | ||||
| namespace AudioCore::AudioOut { | ||||
|  | ||||
| @@ -84,12 +85,12 @@ public: | ||||
|      * | ||||
|      * @param device_name             - The name of the requested output device. | ||||
|      * @param in_params               - Input parameters, see AudioOutParameter. | ||||
|      * @param handle                  - Unused. | ||||
|      * @param handle                  - Process handle. | ||||
|      * @param applet_resource_user_id - Unused. | ||||
|      * @return Result code. | ||||
|      */ | ||||
|     Result Initialize(std::string device_name, const AudioOutParameter& in_params, u32 handle, | ||||
|                       u64 applet_resource_user_id); | ||||
|     Result Initialize(std::string device_name, const AudioOutParameter& in_params, | ||||
|                       Kernel::KProcess* handle, u64 applet_resource_user_id); | ||||
|  | ||||
|     /** | ||||
|      * Start this system. | ||||
| @@ -228,8 +229,8 @@ public: | ||||
| private: | ||||
|     /// Core system | ||||
|     Core::System& system; | ||||
|     /// (Unused) | ||||
|     u32 handle{}; | ||||
|     /// Process handle | ||||
|     Kernel::KProcess* handle{}; | ||||
|     /// (Unused) | ||||
|     u64 applet_resource_user_id{}; | ||||
|     /// Buffer event, signalled when a buffer is ready | ||||
|   | ||||
		Reference in New Issue
	
	Block a user