Merge pull request #3833 from atom/no-renderer-pump

Don't pump message loop when sending sync msg
This commit is contained in:
Cheng Zhao 2015-12-16 23:38:43 +08:00
commit b7cbc49c01
3 changed files with 4 additions and 12 deletions

View file

@ -54,8 +54,6 @@ base::string16 SendSync(mate::Arguments* args,
IPC::SyncMessage* message = new AtomViewHostMsg_Message_Sync(
render_view->GetRoutingID(), channel, arguments, &json);
// Enable the UI thread in browser to receive messages.
message->EnableMessagePumping();
bool success = render_view->Send(message);
if (!success)

View file

@ -6,12 +6,6 @@ v8Util = process.atomBinding 'v8_util'
# Created by init.coffee.
ipcRenderer = v8Util.getHiddenValue global, 'ipc'
# Delay the callback to next tick in case the browser is still in the middle
# of sending a message while the callback sends a sync message to browser,
# which can fail sometimes.
ipcRenderer.emit = (args...) ->
setTimeout (-> EventEmitter::emit.call ipcRenderer, args...), 0
ipcRenderer.send = (args...) ->
binding.send 'ipc-message', [args...]

View file

@ -27,7 +27,9 @@ convertToMenuTemplate = (items) ->
label: item.label
enabled: item.enabled
if item.id?
transformed.click = -> DevToolsAPI.contextMenuItemSelected item.id
transformed.click = ->
DevToolsAPI.contextMenuItemSelected item.id
DevToolsAPI.contextMenuCleared()
template.push transformed
template
@ -37,9 +39,7 @@ createMenu = (x, y, items, document) ->
menu = Menu.buildFromTemplate convertToMenuTemplate(items)
# The menu is expected to show asynchronously.
setImmediate ->
menu.popup remote.getCurrentWindow()
DevToolsAPI.contextMenuCleared()
setTimeout -> menu.popup remote.getCurrentWindow()
showFileChooserDialog = (callback) ->
{remote} = require 'electron'