@ -167,13 +167,12 @@ public:
{ 3 , & IAudioDevice : : GetActiveAudioDeviceName , " GetActiveAudioDeviceName " } ,
{ 4 , & IAudioDevice : : QueryAudioDeviceSystemEvent , " QueryAudioDeviceSystemEvent " } ,
{ 5 , & IAudioDevice : : GetActiveChannelCount , " GetActiveChannelCount " } ,
{ 6 , & IAudioDevice : : ListAudioDeviceName ,
" ListAudioDeviceNameAuto " } , // TODO(ogniK): Confirm if autos are identical to non auto
{ 6 , & IAudioDevice : : ListAudioDeviceName , " ListAudioDeviceNameAuto " } ,
{ 7 , & IAudioDevice : : SetAudioDeviceOutputVolume , " SetAudioDeviceOutputVolumeAuto " } ,
{ 8 , nullptr , " GetAudioDeviceOutputVolumeAuto " } ,
{ 10 , & IAudioDevice : : GetActiveAudioDeviceName , " GetActiveAudioDeviceNameAuto " } ,
{ 11 , nullptr , " QueryAudioDeviceInputEvent " } ,
{ 12 , nullptr , " QueryAudioDeviceOutputEvent " } ,
{ 12 , & IAudioDevice : : QueryAudioDeviceOutputEvent , " QueryAudioDeviceOutputEvent " } ,
{ 13 , nullptr , " GetAudioSystemMasterVolumeSetting " } ,
} ;
RegisterHandlers ( functions ) ;
@ -181,6 +180,11 @@ public:
auto & kernel = Core : : System : : GetInstance ( ) . Kernel ( ) ;
buffer_event = Kernel : : WritableEvent : : CreateEventPair ( kernel , Kernel : : ResetType : : Automatic ,
" 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 :
@ -237,7 +241,16 @@ private:
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 audio_output_device_switch_event ;
} ; // namespace Audio