File 0110-Fixup-batch-break.patch of Package erlang

From 9ab3802aa7d8d04ec8cad00d45b405dddcddd3c9 Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Wed, 26 Apr 2017 16:07:24 +0200
Subject: [PATCH] Fixup batch break

Batches was breaked to often, increase the test and break
if batch is done (and queue empty).
---
 lib/wx/c_src/wxe_impl.cpp | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/lib/wx/c_src/wxe_impl.cpp b/lib/wx/c_src/wxe_impl.cpp
index 05d56667a..8d92fb1f9 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);
-- 
2.12.2

openSUSE Build Service is sponsored by