Changeset 8524 in josm for trunk/src/org


Ignore:
Timestamp:
2015-06-22T23:49:54+02:00 (9 years ago)
Author:
simon04
Message:

see #11591, see #11355 - Splash screen: attempt to fix synchronisation/deadlock issue

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/SplashScreen.java

    r8520 r8524  
    1313import java.awt.event.MouseAdapter;
    1414import java.awt.event.MouseEvent;
    15 import java.util.ArrayList;
    16 import java.util.Collections;
    1715import java.util.List;
    1816import java.util.Objects;
     17import java.util.concurrent.CopyOnWriteArrayList;
    1918
    2019import javax.swing.BorderFactory;
     
    123122    @Override
    124123    public void stateChanged(ChangeEvent ignore) {
    125         /*GuiHelper.runInEDT(new Runnable() {
     124        GuiHelper.runInEDT(new Runnable() {
    126125            @Override
    127126            public void run() {
    128127                progressRenderer.setTasks(progressMonitor.toString());
    129128            }
    130         });*/
     129        });
    131130    }
    132131
     
    194193        private final String name;
    195194        private final ChangeListener listener;
    196         private final List<Task> tasks = Collections.synchronizedList(new ArrayList<Task>());
     195        private final List<Task> tasks = new CopyOnWriteArrayList<>();
    197196        private SplashProgressMonitor latestSubtask;
    198197
     
    204203        @Override
    205204        public StringBuilder toHtml(StringBuilder sb) {
    206             synchronized (tasks) {
    207                 sb.append(Utils.firstNonNull(name, ""));
    208                 if (!tasks.isEmpty()) {
    209                     sb.append("<ul>");
    210                     for (Task i : tasks) {
    211                         sb.append("<li>");
    212                         i.toHtml(sb);
    213                         sb.append("</li>");
    214                     }
    215                     sb.append("</ul>");
     205            sb.append(Utils.firstNonNull(name, ""));
     206            if (!tasks.isEmpty()) {
     207                sb.append("<ul>");
     208                for (Task i : tasks) {
     209                    sb.append("<li>");
     210                    i.toHtml(sb);
     211                    sb.append("</li>");
    216212                }
    217                 return sb;
    218             }
     213                sb.append("</ul>");
     214            }
     215            return sb;
    219216        }
    220217
     
    388385        }
    389386
     387        /**
     388         * Sets the tasks to displayed. A HTML formatted list is expected.
     389         */
    390390        public void setTasks(String tasks) {
    391             synchronized (lblTaskTitle) {
    392                 lblTaskTitle.setText(LABEL_HTML + tasks);
    393                 lblTaskTitle.setCaretPosition(lblTaskTitle.getDocument().getLength());
    394             }
     391            lblTaskTitle.setText(LABEL_HTML + tasks);
     392            lblTaskTitle.setCaretPosition(lblTaskTitle.getDocument().getLength());
    395393            repaint();
    396394        }
Note: See TracChangeset for help on using the changeset viewer.