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 {