aboutsummaryrefslogtreecommitdiffstats
path: root/lib/wx/c_src/wxe_callback_impl.cpp
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2014-02-14 09:52:51 +0100
committerDan Gudmundsson <[email protected]>2014-02-14 09:52:51 +0100
commit50093842d6e916a76e4ed42263b1b3f9489d896e (patch)
tree189db72c1c2c126632ec592e7dfd2e6078b79851 /lib/wx/c_src/wxe_callback_impl.cpp
parentd10a115ab1e66938531b87bef20f886013e7b96b (diff)
parent7f68f9862f133e07e4b847c91c52fcf81aee79d5 (diff)
downloadotp-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/c_src/wxe_callback_impl.cpp')
-rw-r--r--lib/wx/c_src/wxe_callback_impl.cpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/wx/c_src/wxe_callback_impl.cpp b/lib/wx/c_src/wxe_callback_impl.cpp
index 8ba2557d82..e06f68dcbf 100644
--- a/lib/wx/c_src/wxe_callback_impl.cpp
+++ b/lib/wx/c_src/wxe_callback_impl.cpp
@@ -30,27 +30,27 @@
* CallbackData *
* ****************************************************************************/
-wxeCallbackData::wxeCallbackData(ErlDrvTermData caller, int req, char *req_type,
- int funcb, int skip_ev, wxeErlTerm * userData,
- wxeEvtListener *handler_cb)
- : wxObject()
+wxeEvtListener::wxeEvtListener(ErlDrvTermData caller, int req, char *req_type,
+ int funcb, int skip_ev, wxeErlTerm * userData,
+ ErlDrvTermData from_port)
+ : wxEvtHandler()
{
+ port=from_port;
listener = caller;
obj = req;
fun_id = funcb;
strcpy(class_name, req_type);
skip = skip_ev;
user_data = userData;
- handler = handler_cb;
}
-wxeCallbackData::~wxeCallbackData() {
- // fprintf(stderr, "CBD Deleteing %p %s\r\n", this, class_name); fflush(stderr);
+wxeEvtListener::~wxeEvtListener() {
+ // fprintf(stderr, "CBD Deleteing %p %s\r\n", this, class_name); fflush(stderr);
if(user_data) {
delete user_data;
}
ptrMap::iterator it;
- it = ((WxeApp *)wxTheApp)->ptr2ref.find(handler);
+ it = ((WxeApp *)wxTheApp)->ptr2ref.find(this);
if(it != ((WxeApp *)wxTheApp)->ptr2ref.end()) {
wxeRefData *refd = it->second;
wxeReturn rt = wxeReturn(WXE_DRV_PORT, refd->memenv->owner, false);
@@ -61,6 +61,17 @@ wxeCallbackData::~wxeCallbackData() {
rt.addTupleCount(4);
rt.send();
}
+ ((WxeApp *)wxTheApp)->clearPtr(this);
+}
+
+void wxeEvtListener::forward(wxEvent& event)
+{
+#ifdef DEBUG
+ if(!sendevent(&event, port))
+ fprintf(stderr, "Couldn't send event!\r\n");
+#else
+sendevent(&event, port);
+#endif
}
/* *****************************************************************/