Skip to content

Conversation

@Fangal-Airbag
Copy link

This PR adds in support for separate Gamepad and TV SDL Devices while retaining support for mirroring the audio on both at the same time.

These audio devices can be created as follows:

// Gamepad
SDL_AudioDeviceID drcAudio = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_WIIU_GAMEPAD, 0, &desiredSpec, &obtainedSpec1, 0);

// TV
SDL_AudioDeviceID tvAudio = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_WIIU_TV, 0, &desiredSpec, &obtainedSpec2, 0);

// Both
SDL_AudioDeviceID bothAudio = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_WIIU_MIRRORED, 0, &desiredSpec, &obtainedSpec3, 0);

When setting up SDL_Audio and creating an audio device, if not specified, the audio device will default to SDL_AUDIO_DEVICE_WIIU_MIRRORED.

sorry for the second PR, had to fix some git stuff

Copy link

@GaryOderNichts GaryOderNichts left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! Hmm, this code seems somewhat fragile at the moment.
Closing a single audio device will uninitialize AX, even if other devices are still running. wiiuDevices is also not updated when closing a device, causing potential issues in the frame callback.
Ideally it should be possible to close and reopen audio devices. I think separating the AX initialization from opening and closing audio devices might be a good idea.

@Fangal-Airbag
Copy link
Author

So with this commit AX will only deinitialize if its the last audio device being closed. wiiuDevices is also now updated with both the open and close device functions. AX will also not initialize if its already been initialized, this was already the case before this PR but this case should only really happen now. Let me know if I missed anything!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants