use webcontents id to identify callbacks
This commit is contained in:
parent
3a154ab8ea
commit
2c59f4567e
6 changed files with 25 additions and 21 deletions
|
@ -4,8 +4,8 @@ objectsRegistry = require './objects-registry.js'
|
|||
v8Util = process.atomBinding 'v8_util'
|
||||
IDWeakMap = process.atomBinding('id_weak_map').IDWeakMap
|
||||
|
||||
# Weak reference to callback with their registry ID.
|
||||
rendererCallbacks = new IDWeakMap()
|
||||
# Object mapping from webcontents id to their renderer callbacks weakmap.
|
||||
rendererRegistry = {}
|
||||
|
||||
# Convert a real value into meta data.
|
||||
valueToMeta = (sender, value, optimizeSimpleObject=false) ->
|
||||
|
@ -74,11 +74,18 @@ unwrapArgs = (sender, args) ->
|
|||
returnValue = metaToValue meta.value
|
||||
-> returnValue
|
||||
when 'function'
|
||||
webContentsId = sender.getId()
|
||||
rendererCallbacks = rendererRegistry[webContentsId]
|
||||
if not rendererCallbacks?
|
||||
# Weak reference to callbacks with their ID
|
||||
rendererCallbacks = new IDWeakMap()
|
||||
rendererRegistry[webContentsId] = rendererCallbacks
|
||||
|
||||
if rendererCallbacks.has(meta.id)
|
||||
return rendererCallbacks.get(meta.id)
|
||||
|
||||
rendererReleased = false
|
||||
objectsRegistry.once "clear-#{sender.getId()}", ->
|
||||
objectsRegistry.once "clear-#{webContentsId}", ->
|
||||
rendererReleased = true
|
||||
|
||||
ret = ->
|
||||
|
@ -109,6 +116,8 @@ callFunction = (event, func, caller, args) ->
|
|||
|
||||
# Send by BrowserWindow when its render view is deleted.
|
||||
process.on 'ATOM_BROWSER_RELEASE_RENDER_VIEW', (id) ->
|
||||
if rendererRegistry.id?
|
||||
delete rendererRegistry.id
|
||||
objectsRegistry.clear id
|
||||
|
||||
ipc.on 'ATOM_BROWSER_REQUIRE', (event, module) ->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue