Service/DSP: implement semaphore event
This commit is contained in:
parent
6f6ffceec4
commit
92e5c51adb
4 changed files with 20 additions and 2 deletions
|
@ -268,12 +268,12 @@ void DSP_DSP::GetSemaphoreEventHandle(Kernel::HLERequestContext& ctx) {
|
|||
|
||||
void DSP_DSP::SetSemaphoreMask(Kernel::HLERequestContext& ctx) {
|
||||
IPC::RequestParser rp(ctx, 0x17, 1, 0);
|
||||
const u32 mask = rp.Pop<u32>();
|
||||
preset_semaphore = rp.Pop<u16>();
|
||||
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
|
||||
rb.Push(RESULT_SUCCESS);
|
||||
|
||||
LOG_WARNING(Service_DSP, "(STUBBED) called mask=0x{:08X}", mask);
|
||||
LOG_WARNING(Service_DSP, "(STUBBED) called mask=0x{:04X}", preset_semaphore);
|
||||
}
|
||||
|
||||
void DSP_DSP::GetHeadphoneStatus(Kernel::HLERequestContext& ctx) {
|
||||
|
@ -380,6 +380,9 @@ DSP_DSP::DSP_DSP(Core::System& system)
|
|||
|
||||
semaphore_event =
|
||||
system.Kernel().CreateEvent(Kernel::ResetType::OneShot, "DSP_DSP::semaphore_event");
|
||||
|
||||
semaphore_event->SetHLENotifier(
|
||||
[this]() { this->system.DSP().SetSemaphore(preset_semaphore); });
|
||||
}
|
||||
|
||||
DSP_DSP::~DSP_DSP() {
|
||||
|
|
|
@ -257,6 +257,7 @@ private:
|
|||
Core::System& system;
|
||||
|
||||
Kernel::SharedPtr<Kernel::Event> semaphore_event;
|
||||
u16 preset_semaphore = 0;
|
||||
|
||||
Kernel::SharedPtr<Kernel::Event> interrupt_zero = nullptr; /// Currently unknown purpose
|
||||
Kernel::SharedPtr<Kernel::Event> interrupt_one = nullptr; /// Currently unknown purpose
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue