diff --git a/src/native/window.ts b/src/native/window.ts index d5d2182..9aeb5d6 100644 --- a/src/native/window.ts +++ b/src/native/window.ts @@ -205,12 +205,9 @@ export function createMainWindow() { }); return; } - mainWindow.webContents.send( - "screenPicker", - sources.map((source, idx) => { - return { idx: idx, name: source.name }; - }), - (idx: number, audio: boolean) => { + ipcMain.once( + "screenPickerCallback", + (_, idx: number, audio: boolean) => { if (idx < 0 || idx > sources.length) { callback({}); } else { @@ -221,6 +218,12 @@ export function createMainWindow() { } }, ); + mainWindow.webContents.send( + "screenPicker", + sources.map((source, idx) => { + return { idx: idx, name: source.name }; + }), + ); }); }, { useSystemPicker: true }, diff --git a/src/world/window.ts b/src/world/window.ts index 187ffd7..1cc6c12 100644 --- a/src/world/window.ts +++ b/src/world/window.ts @@ -18,13 +18,10 @@ contextBridge.exposeInMainWorld("native", { // Wrapped in braces to return void onceScreenPicker: ( - onScreenPick: ( - sources: { idx: number; name: string }[], - callback: (idx: number, audio: boolean) => void, - ) => void, + onScreenPick: (sources: { idx: number; name: string }[]) => void, ) => { - ipcRenderer.once("screenPicker", (_, sources, callback) => - onScreenPick(sources, callback), - ); + ipcRenderer.once("screenPicker", (_, sources) => onScreenPick(sources)); }, + screenPickerCallback: (idx: number, audio: boolean) => + ipcRenderer.send("screenPickerCallback", idx, audio), });