From 0ba69e7c70ceee9a0ab16aa7c4ed5c57f530b277 Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 06:49:31 +0000 Subject: [PATCH] 2002/08/07 03:26:00 darcs-hash:20040130064931-2ba56-c8fd4930751111ab982504437cb42e79af17d04d.gz --- CHANGES | 4 ++++ src/org/xwt/MessageQueue.java | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 547a8db..f3deac4 100644 --- a/CHANGES +++ b/CHANGES @@ -316,3 +316,7 @@ 06-Jul megacz Context.java: workaround for GCJ bug which causes MessageFormatter to choke on { and } +06-Jul megacz MessageQueue.java: fixed MessageQueueWatcher so that it + works even when an infinite loop occurs in a _SizeChange + or _PosChange trap. + diff --git a/src/org/xwt/MessageQueue.java b/src/org/xwt/MessageQueue.java index b6643c6..5f8b17d 100644 --- a/src/org/xwt/MessageQueue.java +++ b/src/org/xwt/MessageQueue.java @@ -115,10 +115,13 @@ 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"; -- 1.7.10.4