From 3e51d8d32aa220d7f3c768236a23586a94e318b1 Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Tue, 26 Jan 2021 08:46:40 +0200 Subject: [PATCH] ipc fix Signed-off-by: Jari Kolehmainen --- src/common/ipc.ts | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/common/ipc.ts b/src/common/ipc.ts index cb4da6ca95..0b4e2c97d2 100644 --- a/src/common/ipc.ts +++ b/src/common/ipc.ts @@ -17,14 +17,8 @@ export async function requestMain(channel: string, ...args: any[]) { return ipcRenderer.invoke(channel, ...args); } -async function getSubFrames(processId: number): Promise { - const subFrames: ClusterFrameInfo[] = []; - - clusterFrameMap.forEach(frameInfo => { - subFrames.push(frameInfo); - }); - - return subFrames.filter(frame => frame.processId === processId); +async function getSubFrames(): Promise { + return Array.from(clusterFrameMap.values()); } export async function broadcastMessage(channel: string, ...args: any[]) { @@ -32,21 +26,25 @@ export async function broadcastMessage(channel: string, ...args: any[]) { if (!views) return; + let subFrames: Promise; + + if (ipcRenderer) { + subFrames = requestMain(subFramesChannel); + } else { + subFrames = getSubFrames(); + } + views.forEach(async webContent => { const type = webContent.getType(); logger.silly(`[IPC]: broadcasting "${channel}" to ${type}=${webContent.id}`, { args }); webContent.send(channel, ...args); - - let subFrames: ClusterFrameInfo[]; - - if (ipcRenderer) { - subFrames = await requestMain(subFramesChannel, webContent.getProcessId()); - } else { - subFrames = await getSubFrames(webContent.getProcessId()); - } - subFrames.map((frameInfo) => { - webContent.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...args); + subFrames.then((frames) => { + frames.map((frameInfo) => { + webContent.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...args); + }); + }).catch((e) => { + logger.warning(`[IPC]: failed to broadcast ${channel} to frame`, { error: e}); }); }); @@ -84,7 +82,7 @@ export function unsubscribeAllFromBroadcast(channel: string) { } export function bindBroadcastHandlers() { - handleRequest(subFramesChannel, async (processId: number) => { - return toJS(await getSubFrames(processId), { recurseEverything: true }); + handleRequest(subFramesChannel, async () => { + return toJS(await getSubFrames(), { recurseEverything: true }); }); }