IAudioDevice::QueryAudioDeviceOutputEvent
The event should only be signaled when an output audio device gets changed. Example, Speaker to USB headset. We don't identify different devices internally yet so there's no need to signal the event yet.
This commit is contained in:
parent
d992909636
commit
965608e6d1
1 changed files with 16 additions and 3 deletions
|
@ -167,13 +167,12 @@ public:
|
||||||
{3, &IAudioDevice::GetActiveAudioDeviceName, "GetActiveAudioDeviceName"},
|
{3, &IAudioDevice::GetActiveAudioDeviceName, "GetActiveAudioDeviceName"},
|
||||||
{4, &IAudioDevice::QueryAudioDeviceSystemEvent, "QueryAudioDeviceSystemEvent"},
|
{4, &IAudioDevice::QueryAudioDeviceSystemEvent, "QueryAudioDeviceSystemEvent"},
|
||||||
{5, &IAudioDevice::GetActiveChannelCount, "GetActiveChannelCount"},
|
{5, &IAudioDevice::GetActiveChannelCount, "GetActiveChannelCount"},
|
||||||
{6, &IAudioDevice::ListAudioDeviceName,
|
{6, &IAudioDevice::ListAudioDeviceName, "ListAudioDeviceNameAuto"},
|
||||||
"ListAudioDeviceNameAuto"}, // TODO(ogniK): Confirm if autos are identical to non auto
|
|
||||||
{7, &IAudioDevice::SetAudioDeviceOutputVolume, "SetAudioDeviceOutputVolumeAuto"},
|
{7, &IAudioDevice::SetAudioDeviceOutputVolume, "SetAudioDeviceOutputVolumeAuto"},
|
||||||
{8, nullptr, "GetAudioDeviceOutputVolumeAuto"},
|
{8, nullptr, "GetAudioDeviceOutputVolumeAuto"},
|
||||||
{10, &IAudioDevice::GetActiveAudioDeviceName, "GetActiveAudioDeviceNameAuto"},
|
{10, &IAudioDevice::GetActiveAudioDeviceName, "GetActiveAudioDeviceNameAuto"},
|
||||||
{11, nullptr, "QueryAudioDeviceInputEvent"},
|
{11, nullptr, "QueryAudioDeviceInputEvent"},
|
||||||
{12, nullptr, "QueryAudioDeviceOutputEvent"},
|
{12, &IAudioDevice::QueryAudioDeviceOutputEvent, "QueryAudioDeviceOutputEvent"},
|
||||||
{13, nullptr, "GetAudioSystemMasterVolumeSetting"},
|
{13, nullptr, "GetAudioSystemMasterVolumeSetting"},
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
|
@ -181,6 +180,11 @@ public:
|
||||||
auto& kernel = Core::System::GetInstance().Kernel();
|
auto& kernel = Core::System::GetInstance().Kernel();
|
||||||
buffer_event = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Automatic,
|
buffer_event = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Automatic,
|
||||||
"IAudioOutBufferReleasedEvent");
|
"IAudioOutBufferReleasedEvent");
|
||||||
|
|
||||||
|
// Should only be signalled when an audio output device has been changed, example: speaker
|
||||||
|
// to headset
|
||||||
|
audio_output_device_switch_event = Kernel::WritableEvent::CreateEventPair(
|
||||||
|
kernel, Kernel::ResetType::Automatic, "IAudioDevice:AudioOutputDeviceSwitchedEvent");
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -237,7 +241,16 @@ private:
|
||||||
rb.Push<u32>(1);
|
rb.Push<u32>(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QueryAudioDeviceOutputEvent(Kernel::HLERequestContext& ctx) {
|
||||||
|
LOG_DEBUG(Service_Audio, "called");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
rb.PushCopyObjects(audio_output_device_switch_event.readable);
|
||||||
|
}
|
||||||
|
|
||||||
Kernel::EventPair buffer_event;
|
Kernel::EventPair buffer_event;
|
||||||
|
Kernel::EventPair audio_output_device_switch_event;
|
||||||
|
|
||||||
}; // namespace Audio
|
}; // namespace Audio
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue