audio: Improve port state guards. (#1998)

This commit is contained in:
squidbus
2025-01-02 07:33:53 -08:00
committed by GitHub
parent 596f4cdf0e
commit 55b50171f8
3 changed files with 103 additions and 83 deletions

View File

@@ -3,7 +3,9 @@
#pragma once
#include <condition_variable>
#include <memory>
#include <mutex>
#include "common/bit_field.h"
#include "core/libraries/kernel/threads.h"
@@ -74,10 +76,10 @@ struct AudioFormatInfo {
};
struct PortOut {
std::mutex mutex;
std::unique_ptr<PortBackend> impl{};
void* output_buffer;
std::mutex output_mutex;
std::condition_variable_any output_cv;
bool output_ready;
Kernel::Thread output_thread{};
@@ -88,6 +90,10 @@ struct PortOut {
u32 buffer_frames;
std::array<s32, 8> volume;
[[nodiscard]] bool IsOpen() const {
return impl != nullptr;
}
[[nodiscard]] u32 BufferSize() const {
return buffer_frames * format_info.FrameSize();
}