提交 8841c6bb 编写于 作者: yanghye's avatar yanghye

upgrade-dev v2.3.2

上级 0f3f65bd
......@@ -34,12 +34,15 @@ func (m *ipcBrowserProcess) ipcEmitMessage(browser *ICefBrowser, frame *ICefFram
if eventCallback == nil {
return
}
var argsBytes []byte
//参数 字节数组
args := argument.GetBinary(2)
size := args.GetSize()
argsBytes := make([]byte, size)
args.GetData(argsBytes, 0)
args.Free() //立即释放掉
if args.IsValid() {
size := args.GetSize()
argsBytes = make([]byte, size)
args.GetData(argsBytes, 0)
args.Free() //立即释放掉
}
ipcContext := ipc.NewContext(browser.Identifier(), frame.Identifier(), argsBytes)
argsBytes = nil
if ctxCallback := eventCallback.ContextCallback(); ctxCallback != nil {
......@@ -68,7 +71,9 @@ func (m *ipcBrowserProcess) ipcEmitMessage(browser *ICefBrowser, frame *ICefFram
replay.Clear()
replyMessage.Free()
}
ipcContext.ArgumentList().Free()
if ipcContext.ArgumentList() != nil {
ipcContext.ArgumentList().Free()
}
ipcContext.Result(nil)
return
}
......
......@@ -174,29 +174,28 @@ func (m *ipcRenderProcess) ipcEmitExecute(name string, object *ICefV8Value, argu
isFree = true
return
}
context := V8ContextRef.Current()
var messageId int32 = 0
//回调函数
if emitCallback != nil {
//回调函数临时存放到缓存中
messageId = ipcRender.emitHandler.addCallback(&ipcCallback{
arguments: arguments,
context: context,
function: V8ValueRef.UnWrap(emitCallback),
})
}
ipcEmitMessage = ProcessMessageRef.new(internalProcessMessageIPCEmit)
argument := ipcEmitMessage.ArgumentList()
binaryValue = BinaryValueRef.New(args)
argument.SetInt(0, messageId) // 消息id
argument.SetString(1, emitNameValue) // 事件名
argument.SetBinary(2, binaryValue) // args
frame := context.Frame()
frame.SendProcessMessage(consts.PID_BROWSER, ipcEmitMessage)
args = nil
frame.Free()
//context.Free()
}
context := V8ContextRef.Current()
var messageId int32 = 0
//回调函数
if emitCallback != nil {
//回调函数临时存放到缓存中
messageId = ipcRender.emitHandler.addCallback(&ipcCallback{
arguments: arguments,
context: context,
function: V8ValueRef.UnWrap(emitCallback),
})
}
ipcEmitMessage = ProcessMessageRef.new(internalProcessMessageIPCEmit)
argument := ipcEmitMessage.ArgumentList()
argument.SetInt(0, messageId) // 消息id
argument.SetString(1, emitNameValue) // 事件名
argument.SetBinary(2, binaryValue) // args
frame := context.Frame()
frame.SendProcessMessage(consts.PID_BROWSER, ipcEmitMessage)
frame.Free()
retVal.SetResult(V8ValueRef.NewBool(true))
}
return
......
......@@ -64,6 +64,9 @@ func (m *ICefBinaryValue) Instance() uintptr {
}
func (m *ICefBinaryValue) IsValid() bool {
if m.instance == nil {
return false
}
r1, _, _ := imports.Proc(internale_CefBinaryValue_IsValid).Call(m.Instance())
return api.GoBool(r1)
}
......
......@@ -240,6 +240,9 @@ func (m *ICefListValue) SetValue(index uint32, value *ICefValue) (result bool) {
}
func (m *ICefListValue) SetBinary(index uint32, value *ICefBinaryValue) (result bool) {
if value == nil || value.instance == nil {
return false
}
r1, _, _ := imports.Proc(internale_CefListValue_SetBinary).Call(m.Instance(), uintptr(index), value.Instance())
result = api.GoBool(r1)
if result {
......
......@@ -42,8 +42,11 @@ func main() {
go server.StartHttpServer()
})
ipc.Emit("", "aaa", "bbb")
ipc.EmitAndCallback("", func() {}, "aaaa")
ipc.On("testGoEmit", func(context ipc.IContext) {
fmt.Println("testGoEmit", context.BrowserId(), context.FrameId())
//ipc.Emit("", "aaa", "bbb")
//ipc.EmitAndCallback("", func() {}, "aaaa")
})
ipc.OnArguments("testResultArgs", func(args1 int) (string, int, float64, bool, *MyError, []string, []*src.StructVarDemo, []src.StructVarDemo, map[string]string, map[string]interface{}, []map[string]interface{}) {
fmt.Println("args1", args1)
......
......@@ -127,6 +127,10 @@
});
function testGoEmit() {
ipc.emit("testGoEmit");
}
function bindFunc() {
energy.funcName();
}
......@@ -138,6 +142,7 @@
msg('doubleField', energy.doubleField);
msg('boolField', energy.boolField);
}
</script>
</head>
<body style="margin: 0px;padding: 0px;">
......@@ -152,6 +157,8 @@
<button onclick="testInArgs()">testInArgs</button>
<button onclick="testResultArgs()">testResultArgs</button>
<br>
<button onclick="testGoEmit()">testGoEmit</button>
<br>
<button onclick="bindFunc()">bindFunc</button>
<button onclick="bindField()">bindField</button>
</p>
......
......@@ -632,6 +632,9 @@ func (m *jsonData) Clear() {
}
func (m *jsonData) Free() {
if m == nil {
return
}
m.V = nil
m.S = 0
m.T = GO_VALUE_INVALID
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册