diff options
author | Dan Gudmundsson <[email protected]> | 2014-02-14 09:52:51 +0100 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2014-02-14 09:52:51 +0100 |
commit | 50093842d6e916a76e4ed42263b1b3f9489d896e (patch) | |
tree | 189db72c1c2c126632ec592e7dfd2e6078b79851 /lib/wx/src/wxe_util.erl | |
parent | d10a115ab1e66938531b87bef20f886013e7b96b (diff) | |
parent | 7f68f9862f133e07e4b847c91c52fcf81aee79d5 (diff) | |
download | otp-50093842d6e916a76e4ed42263b1b3f9489d896e.tar.gz otp-50093842d6e916a76e4ed42263b1b3f9489d896e.tar.bz2 otp-50093842d6e916a76e4ed42263b1b3f9489d896e.zip |
Merge branch 'dgud/wx/fix-cb-cleanup/OTP-11699'
* dgud/wx/fix-cb-cleanup/OTP-11699:
wx: Test fixes compilation warning
wx: Do not warn for our own deprecated functions
wx: Rewrite eventhandling again
Diffstat (limited to 'lib/wx/src/wxe_util.erl')
-rw-r--r-- | lib/wx/src/wxe_util.erl | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/lib/wx/src/wxe_util.erl b/lib/wx/src/wxe_util.erl index a31c3e30b8..02ac4ddfa6 100644 --- a/lib/wx/src/wxe_util.erl +++ b/lib/wx/src/wxe_util.erl @@ -74,7 +74,7 @@ call(Op, Args) -> true -> debug_call(Dbg band 15, Op, Args, Port) end. - + rec(Op) -> receive {'_wxe_result_', Res} -> Res; @@ -108,21 +108,26 @@ send_bin(Bin) when is_binary(Bin) -> get_cbId(Fun) -> gen_server:call((wx:get_env())#wx_env.sv,{register_cb, Fun}, infinity). -connect_cb(Object,EvData) -> - handle_listener(connect_cb, Object, EvData). - -disconnect_cb(Object,EvData) -> - handle_listener(disconnect_cb, Object, EvData). - -handle_listener(Op,Object,EvData) -> - Listener = gen_server:call((wx:get_env())#wx_env.sv, {Op,Object,EvData}, infinity), - case Listener of - {call_impl, connect_cb, EvtList} -> - wxEvtHandler:connect_impl(EvtList,Object,EvData); - Res -> - Res +connect_cb(Object,EvData0 = #evh{cb=Callback}) -> + Server = (wx:get_env())#wx_env.sv, + case Callback of + 0 -> %% Message api connect from this process + case wxEvtHandler:connect_impl(Object,EvData0) of + {ok, Listener} -> + EvData = EvData0#evh{handler=Listener, userdata=undefined}, + gen_server:call(Server, {connect_cb,Object,EvData}, infinity); + Error -> + Error + end; + _ -> %% callback, fun or pid (pid for wx_object:sync_events masked callbacks) + %% let the server do the connect + gen_server:call(Server, {connect_cb,Object,EvData0}, infinity) end. +disconnect_cb(Object,EvData) -> + Server = (wx:get_env())#wx_env.sv, + gen_server:call(Server, {disconnect_cb,Object,EvData}, infinity). + debug_cast(1, Op, _Args, _Port) -> check_previous(), case ets:lookup(wx_debug_info,Op) of |