From 3338bf2fcbae1c291f8298aad944bfaddef71503 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 7 Mar 2017 17:19:52 +0100 Subject: [PATCH] :zap: spawn shared process after first workbench window fixes #22091 --- src/vs/code/electron-main/main.ts | 3 +++ src/vs/code/electron-main/sharedProcess.ts | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index ad751da60db..2eb70915101 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -258,6 +258,9 @@ function main(accessor: ServicesAccessor, mainIpcServer: Server, userEnv: platfo // Install Menu instantiationService2.createInstance(VSCodeMenu); + + // Start shared process here + sharedProcess.spawn(); }); } diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index b9088117aac..c70ce1239f6 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -10,6 +10,7 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment' import { TPromise } from 'vs/base/common/winjs.base'; import { IProcessEnvironment } from 'vs/base/common/platform'; import { BrowserWindow, ipcMain } from 'electron'; +import { PromiseSource } from 'vs/base/common/async'; export class SharedProcess { @@ -64,13 +65,21 @@ export class SharedProcess { }); } + private spawnPromiseSource: PromiseSource; + constructor( private environmentService: IEnvironmentService, private userEnv: IProcessEnvironment - ) { } + ) { + this.spawnPromiseSource = new PromiseSource(); + } + + spawn(): void { + this.spawnPromiseSource.complete(); + } whenReady(): TPromise { - return this._whenReady; + return this.spawnPromiseSource.value.then(() => this._whenReady); } toggle(): void {