mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-04 07:38:47 +00:00 
			
		
		
		
	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