corrected removing duplicate devices

This commit is contained in:
Dante Ruiz 2017-03-06 22:14:20 +00:00
parent b6671d92c8
commit fc65723d68

View file

@ -51,7 +51,9 @@ const OUTPUT_DEVICE_SETTING = "audio_output_device";
var selectedInputMenu = ""; var selectedInputMenu = "";
var selectedOutputMenu = ""; var selectedOutputMenu = "";
var audioDevicesList = [];
function setupAudioMenus() { function setupAudioMenus() {
removeAudioMenus();
Menu.addSeparator("Audio", "Input Audio Device"); Menu.addSeparator("Audio", "Input Audio Device");
var inputDeviceSetting = Settings.getValue(INPUT_DEVICE_SETTING); var inputDeviceSetting = Settings.getValue(INPUT_DEVICE_SETTING);
@ -67,11 +69,12 @@ function setupAudioMenus() {
var thisDeviceSelected = (inputDevices[i] == selectedInputDevice); var thisDeviceSelected = (inputDevices[i] == selectedInputDevice);
var menuItem = "Use " + inputDevices[i] + " for Input"; var menuItem = "Use " + inputDevices[i] + " for Input";
Menu.addMenuItem({ Menu.addMenuItem({
menuName: "Audio", menuName: "Audio",
menuItemName: menuItem, menuItemName: menuItem,
isCheckable: true, isCheckable: true,
isChecked: thisDeviceSelected isChecked: thisDeviceSelected
}); });
audioDevicesList.push(menuItem);
if (thisDeviceSelected) { if (thisDeviceSelected) {
selectedInputMenu = menuItem; selectedInputMenu = menuItem;
} }
@ -97,46 +100,22 @@ function setupAudioMenus() {
isCheckable: true, isCheckable: true,
isChecked: thisDeviceSelected isChecked: thisDeviceSelected
}); });
audioDevicesList.push(menuItem);
if (thisDeviceSelected) { if (thisDeviceSelected) {
selectedOutputMenu = menuItem; selectedOutputMenu = menuItem;
} }
} }
} }
function removeAudioDevices() { function removeAudioMenus() {
Menu.removeSeparator("Audio", "Input Audio Device"); Menu.removeSeparator("Audio", "Input Audio Device");
var inputDeviceSetting = Settings.getValue(INPUT_DEVICE_SETTING);
var inputDevices = AudioDevice.getInputDevices();
var selectedInputDevice = AudioDevice.getInputDevice();
if (inputDevices.indexOf(inputDeviceSetting) != -1 && selectedInputDevice != inputDeviceSetting) {
if (AudioDevice.setInputDevice(inputDeviceSetting)) {
selectedInputDevice = inputDeviceSetting;
}
}
print("audio input devices: " + inputDevices);
for(var i = 0; i < inputDevices.length; i++) {
var thisDeviceSelected = (inputDevices[i] == selectedInputDevice);
var menuItem = "Use " + inputDevices[i] + " for Input";
Menu.removeMenuItem("Audio", menuItem);
}
Menu.removeSeparator("Audio", "Output Audio Device"); Menu.removeSeparator("Audio", "Output Audio Device");
var outputDeviceSetting = Settings.getValue(OUTPUT_DEVICE_SETTING); for (var index = 0; index < audioDevicesList.length; index++) {
var outputDevices = AudioDevice.getOutputDevices(); Menu.removeMenuItem("Audio", audioDevicesList[index]);
var selectedOutputDevice = AudioDevice.getOutputDevice();
if (outputDevices.indexOf(outputDeviceSetting) != -1 && selectedOutputDevice != outputDeviceSetting) {
if (AudioDevice.setOutputDevice(outputDeviceSetting)) {
selectedOutputDevice = outputDeviceSetting;
}
}
print("audio output devices: " + outputDevices);
for (var i = 0; i < outputDevices.length; i++) {
var thisDeviceSelected = (outputDevices[i] == selectedOutputDevice);
var menuItem = "Use " + outputDevices[i] + " for Output";
Menu.removeMenuItem("Audio", menuItem);
} }
audioDevicesList = [];
} }
function onDevicechanged() { function onDevicechanged() {
@ -254,7 +233,7 @@ Script.update.connect(checkHMDAudio);
Script.scriptEnding.connect(function () { Script.scriptEnding.connect(function () {
restoreAudio(); restoreAudio();
removeAudioDevices(); removeAudioMenus();
Menu.menuItemEvent.disconnect(menuItemEvent); Menu.menuItemEvent.disconnect(menuItemEvent);
Script.update.disconnect(checkHMDAudio); Script.update.disconnect(checkHMDAudio);
}); });