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< */


Reply via email to