diff options
author | Dan Gudmundsson <[email protected]> | 2013-10-30 16:46:54 +0100 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2013-10-30 16:46:54 +0100 |
commit | c054ac3d4df7fe8b2f58204e677f275bd8f0e60c (patch) | |
tree | 178e2dd83ca426d08d767be91a664b2bf6153e25 /lib/wx/c_src/gen | |
parent | 1d7472911e14e4885c9111aa21fc201c397be20f (diff) | |
download | otp-c054ac3d4df7fe8b2f58204e677f275bd8f0e60c.tar.gz otp-c054ac3d4df7fe8b2f58204e677f275bd8f0e60c.tar.bz2 otp-c054ac3d4df7fe8b2f58204e677f275bd8f0e60c.zip |
wx: Fix cleanup of event handlers
Event handlers was not removed after objects/process had been
delete/died, which causes memory leakage and that fun's was
kept in the wx_server process. Code that might be purged and
the server died.
Diffstat (limited to 'lib/wx/c_src/gen')
-rw-r--r-- | lib/wx/c_src/gen/wxe_events.cpp | 2 | ||||
-rw-r--r-- | lib/wx/c_src/gen/wxe_funcs.cpp | 14 |
2 files changed, 8 insertions, 8 deletions
diff --git a/lib/wx/c_src/gen/wxe_events.cpp b/lib/wx/c_src/gen/wxe_events.cpp index a6a37cb37f..fb3a065448 100644 --- a/lib/wx/c_src/gen/wxe_events.cpp +++ b/lib/wx/c_src/gen/wxe_events.cpp @@ -346,7 +346,7 @@ bool sendevent(wxEvent *event, ErlDrvTermData port) rt.addAtom((char*)"wx"); rt.addInt((int) event->GetId()); - rt.addRef(getRef((void *)(cb->obj), memenv), cb->class_name); + rt.addRef(cb->obj, cb->class_name); rt.addExt2Term(cb->user_data); switch(Etype->cID) { case 164: {// wxCommandEvent diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index 2d8dbb242b..ae8b1fd8b1 100644 --- a/lib/wx/c_src/gen/wxe_funcs.cpp +++ b/lib/wx/c_src/gen/wxe_funcs.cpp @@ -93,13 +93,13 @@ case 100: { // wxEvtHandler::Connect int eventType = wxeEventTypeFromAtom(bp); bp += *eventTypeLen; char *class_name = bp; bp+= *class_nameLen; if(eventType > 0 ) { - wxeCallbackData * Evt_cb = new wxeCallbackData(Ecmd.caller,(void *) This, - class_name,*fun_cb, - *skip, userData); - This->Connect((int) *winid,(int) *lastId,eventType, - (wxObjectEventFunction)(wxEventFunction) &wxeEvtListener::forward, - Evt_cb, Listener); - rt.addAtom("ok"); + wxeCallbackData * Evt_cb = new wxeCallbackData(Ecmd.caller,getRef(This, memenv), + class_name,*fun_cb, + *skip, userData, Listener); + This->Connect((int) *winid,(int) *lastId,eventType, + (wxObjectEventFunction)(wxEventFunction) &wxeEvtListener::forward, + Evt_cb, Listener); + rt.addAtom("ok"); } else { rt.addAtom("badarg"); rt.addAtom("event_type"); |