X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FMessageQueue.java;h=5f8b17dfcbc3752a5a310195861ca22f8fcf7c94;hb=89152b4505ee3435af5396582e25ef45bd48f290;hp=1831dfc1bd11c6272c9bd128a4785146844a897f;hpb=c9e1bd707806233eefcaa5497a7a99a95ae3da51;p=org.ibex.core.git diff --git a/src/org/xwt/MessageQueue.java b/src/org/xwt/MessageQueue.java index 1831dfc..5f8b17d 100644 --- a/src/org/xwt/MessageQueue.java +++ b/src/org/xwt/MessageQueue.java @@ -32,7 +32,7 @@ public class MessageQueue extends Thread { private static Queue events = new Queue(50); /** the number of objects in the queue that are not subclasses of ThreadMessage */ - private static volatile int nonThreadEventsInQueue = 0; + public static volatile int nonThreadEventsInQueue = 0; /** the message currently being performed */ static Message currentlyPerforming = null; @@ -68,7 +68,7 @@ public class MessageQueue extends Thread { i--; continue; } - working = true; + if (!(e instanceof Thread)) working = true; currentlyPerforming = e; // for debugging purposes @@ -115,24 +115,27 @@ public class MessageQueue extends Thread { public MessageQueueWatcher() { start(); } public void run() { while(true) { - if (m != null && m == MessageQueue.currentlyPerforming) { + if ((m != null && m == MessageQueue.currentlyPerforming) || MessageQueue.working) { Context cx; String what; - if (m instanceof ThreadMessage) { + if (m == null) { + cx = Context.getContextForThread(MessageQueue.singleton); + what = "trap"; + } else if (m instanceof ThreadMessage) { ThreadMessage tm = (ThreadMessage)m; cx = Context.getContextForThread(tm); what = "background thread"; } else { cx = Context.getContextForThread(MessageQueue.singleton); - what = Main.initializationComplete ? "trap" : "script"; + what = "script"; } - if (Log.on) Log.log(this, "WARNING: executing same " + what + " for " + (System.currentTimeMillis() - t) / 1000 + "s" + + if (Log.on) Log.log(this, "note: executing same " + what + " for " + (System.currentTimeMillis() - t) / 1000 + "s" + " at " + cx.interpreterSourceFile + ":" + cx.interpreterLine); } else { m = MessageQueue.currentlyPerforming; t = System.currentTimeMillis(); } - try { Thread.sleep(Main.initializationComplete ? 1000 : 15000); } catch (Exception e) { } + try { Thread.sleep(1000); } catch (Exception e) { } } } }