Author: jflesch
Date: 2007-08-02 04:25:15 +0000 (Thu, 02 Aug 2007)
New Revision: 14462
Modified:
trunk/apps/Thaw/src/thaw/core/Logger.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
Log:
Synchronize the log listener list to avoid collisions
Modified: trunk/apps/Thaw/src/thaw/core/Logger.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/Logger.java 2007-08-02 03:46:47 UTC (rev
14461)
+++ trunk/apps/Thaw/src/thaw/core/Logger.java 2007-08-02 04:25:15 UTC (rev
14462)
@@ -133,17 +133,21 @@
if(Logger.logListeners == null)
Logger.logListeners = new Vector();
- Logger.logListeners.add(logListener);
+ synchronized(logListeners) {
+ Logger.logListeners.add(logListener);
+ }
}
public static void removeLogListener(final LogListener logListener) {
if(Logger.logListeners == null)
return;
- Logger.logListeners.remove(logListener);
+ synchronized(logListener) {
+ Logger.logListeners.remove(logListener);
- if (logListeners.size() == 0)
- logListeners = null;
+ if (logListeners.size() == 0)
+ logListeners = null;
+ }
}
@@ -154,11 +158,13 @@
if(Logger.logListeners == null)
return;
- for(final Iterator it = Logger.logListeners.iterator();
- it.hasNext(); ) {
- final LogListener logListener = (LogListener)it.next();
+ synchronized(logListeners) {
+ for(final Iterator it = Logger.logListeners.iterator();
+ it.hasNext(); ) {
+ final LogListener logListener =
(LogListener)it.next();
- logListener.newLogLine(level, src, line);
+ logListener.newLogLine(level, src, line);
+ }
}
}
Modified: trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
2007-08-02 03:46:47 UTC (rev 14461)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/MessageTreeTable.java
2007-08-02 04:25:15 UTC (rev 14462)
@@ -715,19 +715,19 @@
}
- private boolean rebuildMsgList(Vector msgs, TreeNode node, int proof) {
+ private boolean rebuildMsgList(Vector msgs, TreeNode node, int depth) {
if (node instanceof MessageNode)
msgs.add(node);
- if (proof >= 20) {
- Logger.notice(this, "Too proof, sorry");
+ if (depth >= 15) {
+ Logger.notice(this, "Too much depths, sorry");
return false;
}
for(Enumeration e = node.children();
e.hasMoreElements();) {
TreeNode sub = (TreeNode)e.nextElement();
- if (!rebuildMsgList(msgs, sub, proof+1))
+ if (!rebuildMsgList(msgs, sub, depth+1))
return false;
}
Modified:
trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
2007-08-02 03:46:47 UTC (rev 14461)
+++ trunk/apps/Thaw/src/thaw/plugins/miniFrost/frostKSK/KSKBoardFactory.java
2007-08-02 04:25:15 UTC (rev 14462)
@@ -289,6 +289,11 @@
return;
try {
+ /* ugly workaround to avoid a crash due to a Sun bug:
+ * If you call JOptionPanel.showInputDialog() and just
after
+ * TrayIcon.displayMessage(), Swing will crash.
+ * (Note: remember, TrayIcon.displayMessage() is called
by Logger.warning())
+ */
Thread.sleep(1500);
} catch(InterruptedException e) {
/* \_o< */