Fixed an device error

This commit is contained in:
WolverinDEV 2020-02-09 21:37:26 +01:00
parent 1c9fb28cce
commit 35b8082a97

View File

@ -292,18 +292,18 @@ export namespace _audio.recorder {
if(_device === this._current_device) if(_device === this._current_device)
return; return;
const device = _device as NativeDevice; /* TODO: test for? */
this._current_device = _device; this._current_device = _device;
try { try {
await new Promise(resolve => this.handle.set_device(this._current_device.unique_id, resolve)); await new Promise(resolve => this.handle.set_device(this._current_device ? this._current_device.unique_id : undefined, resolve));
await new Promise((resolve, reject) => { if(this._current_state !== audio.recorder.InputState.PAUSED && this._current_device)
this.handle.start(flag => { await new Promise((resolve, reject) => {
if(typeof flag === "boolean" && flag) this.handle.start(flag => {
resolve(); if(typeof flag === "boolean" && flag)
else resolve();
reject(typeof flag === "string" ? flag : "failed to start"); else
reject(typeof flag === "string" ? flag : "failed to start");
});
}); });
});
} catch(error) { } catch(error) {
console.warn(tr("Failed to start playback on new input device (%o)"), error); console.warn(tr("Failed to start playback on new input device (%o)"), error);
throw error; throw error;
@ -383,14 +383,15 @@ export namespace _audio.recorder {
this._current_state = audio.recorder.InputState.DRY; this._current_state = audio.recorder.InputState.DRY;
try { try {
await new Promise((resolve, reject) => { if(this._current_device)
this.handle.start(flag => { await new Promise((resolve, reject) => {
if(flag) this.handle.start(flag => {
resolve(); if(flag)
else resolve();
reject("start failed"); else
reject("start failed");
});
}); });
});
for(const filter of this.filters) for(const filter of this.filters)
if(filter.is_enabled()) if(filter.is_enabled())
filter.initialize(); filter.initialize();
@ -446,7 +447,7 @@ export namespace _audio.recorder {
this._filter.set_attack_smooth(.75); this._filter.set_attack_smooth(.75);
this._filter.set_release_smooth(.75); this._filter.set_release_smooth(.75);
await new Promise(resolve => this._recorder.set_device(this._device.unique_id, resolve)); await new Promise(resolve => this._recorder.set_device(this._device ? this._device.unique_id : undefined, resolve));
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
this._recorder.start(flag => { this._recorder.start(flag => {
if(typeof flag === "boolean" && flag) if(typeof flag === "boolean" && flag)