diff options
author | Dan Gudmundsson <[email protected]> | 2017-05-02 08:14:21 +0200 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2017-05-02 08:14:21 +0200 |
commit | 3c483c22bb4701ee8a26b7324cd1a7a6c22448ce (patch) | |
tree | 20f709a946d8329cee16a8a59c3c0c848216c208 | |
parent | ffa80a41370025ed2fb95967e731f13cc7e45e4f (diff) | |
parent | 9ab3802aa7d8d04ec8cad00d45b405dddcddd3c9 (diff) | |
download | otp-3c483c22bb4701ee8a26b7324cd1a7a6c22448ce.tar.gz otp-3c483c22bb4701ee8a26b7324cd1a7a6c22448ce.tar.bz2 otp-3c483c22bb4701ee8a26b7324cd1a7a6c22448ce.zip |
Merge branch 'dgud/wx/fixup-batch-break'
* dgud/wx/fixup-batch-break:
Fixup batch break
-rw-r--r-- | lib/wx/c_src/wxe_impl.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp index 90cd35455a..18b03af947 100644 --- a/lib/wx/c_src/wxe_impl.cpp +++ b/lib/wx/c_src/wxe_impl.cpp @@ -267,6 +267,8 @@ int WxeApp::dispatch_cmds() return more; } +#define BREAK_BATCH 200 + int WxeApp::dispatch(wxeFifo * batch) { int ping = 0; @@ -279,7 +281,11 @@ int WxeApp::dispatch(wxeFifo * batch) erl_drv_mutex_unlock(wxe_batch_locker_m); switch(event->op) { case WXE_BATCH_END: - if(blevel>0) blevel--; + if(blevel>0) { + blevel--; + if(blevel==0) + wait += BREAK_BATCH*100; + } break; case WXE_BATCH_BEGIN: blevel++; @@ -311,10 +317,13 @@ int WxeApp::dispatch(wxeFifo * batch) erl_drv_mutex_lock(wxe_batch_locker_m); batch->Cleanup(); } - if(blevel <= 0 || wait > 3) { + if(blevel <= 0 || wait > BREAK_BATCH) { erl_drv_mutex_unlock(wxe_batch_locker_m); - if(blevel > 0) return 1; // We are still in a batch but we can let wx check for events - else return 0; + if(blevel > 0) { + return 1; // We are still in a batch but we can let wx check for events + } else { + return 0; + } } // sleep until something happens // fprintf(stderr, "%s:%d sleep %d %d %d\r\n", __FILE__, __LINE__, batch->m_n, blevel, wait);fflush(stderr); |