Emit process exit event with app exit code
authorKevin Sawicki <kevinsawicki@gmail.com>
Tue, 8 Dec 2015 00:45:49 +0000 (16:45 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Wed, 9 Dec 2015 22:40:53 +0000 (14:40 -0800)
atom/browser/api/atom_api_app.cc
atom/browser/api/lib/app.coffee
atom/browser/lib/init.coffee

index 697d6ec..0c36235 100644 (file)
@@ -344,7 +344,7 @@ mate::ObjectTemplateBuilder App::GetObjectTemplateBuilder(
   auto browser = base::Unretained(Browser::Get());
   return mate::ObjectTemplateBuilder(isolate)
       .SetMethod("quit", base::Bind(&Browser::Quit, browser))
-      .SetMethod("exit", base::Bind(&Browser::Exit, browser))
+      .SetMethod("_exit", base::Bind(&Browser::Exit, browser))
       .SetMethod("focus", base::Bind(&Browser::Focus, browser))
       .SetMethod("getVersion", base::Bind(&Browser::GetVersion, browser))
       .SetMethod("setVersion", base::Bind(&Browser::SetVersion, browser))
index d0ec41c..fc0a782 100644 (file)
@@ -34,6 +34,18 @@ app.setAppPath = (path) ->
 app.getAppPath = ->
   appPath
 
+appExitCode = undefined
+app.exit = (exitCode) ->
+  appExitCode = exitCode
+  app._exit(exitCode)
+
+# Map process.exit to app.exit, which quits gracefully.
+process.exit = app.exit
+
+# Emit a process 'exit' event on app quit.
+app.on 'quit', ->
+  process.emit 'exit', appExitCode
+
 # Routes the events to webContents.
 for name in ['login', 'certificate-error', 'select-client-certificate']
   do (name) ->
index 85faf0f..9487849 100644 (file)
@@ -51,13 +51,7 @@ process.on 'uncaughtException', (error) ->
   message = "Uncaught Exception:\n#{stack}"
   dialog.showErrorBox 'A JavaScript error occurred in the main process', message
 
-# Emit 'exit' event on quit.
 {app} = require 'electron'
-app.on 'quit', ->
-  process.emit 'exit'
-
-# Map process.exit to app.exit, which quits gracefully.
-process.exit = app.exit
 
 # Load the RPC server.
 require './rpc-server'