diff --git a/modules/renderer/audio/AudioRecorder.ts b/modules/renderer/audio/AudioRecorder.ts index 354a77d..597f78f 100644 --- a/modules/renderer/audio/AudioRecorder.ts +++ b/modules/renderer/audio/AudioRecorder.ts @@ -292,18 +292,18 @@ export namespace _audio.recorder { if(_device === this._current_device) return; - const device = _device as NativeDevice; /* TODO: test for? */ this._current_device = _device; try { - await new Promise(resolve => this.handle.set_device(this._current_device.unique_id, resolve)); - await new Promise((resolve, reject) => { - this.handle.start(flag => { - if(typeof flag === "boolean" && flag) - resolve(); - else - reject(typeof flag === "string" ? flag : "failed to start"); + await new Promise(resolve => this.handle.set_device(this._current_device ? this._current_device.unique_id : undefined, resolve)); + if(this._current_state !== audio.recorder.InputState.PAUSED && this._current_device) + await new Promise((resolve, reject) => { + this.handle.start(flag => { + if(typeof flag === "boolean" && flag) + resolve(); + else + reject(typeof flag === "string" ? flag : "failed to start"); + }); }); - }); } catch(error) { console.warn(tr("Failed to start playback on new input device (%o)"), error); throw error; @@ -383,14 +383,15 @@ export namespace _audio.recorder { this._current_state = audio.recorder.InputState.DRY; try { - await new Promise((resolve, reject) => { - this.handle.start(flag => { - if(flag) - resolve(); - else - reject("start failed"); + if(this._current_device) + await new Promise((resolve, reject) => { + this.handle.start(flag => { + if(flag) + resolve(); + else + reject("start failed"); + }); }); - }); for(const filter of this.filters) if(filter.is_enabled()) filter.initialize(); @@ -446,7 +447,7 @@ export namespace _audio.recorder { this._filter.set_attack_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) => { this._recorder.start(flag => { if(typeof flag === "boolean" && flag)