diff --git a/src/com/t_oster/liblasercut/TimeIntensiveOperation.java b/src/com/t_oster/liblasercut/TimeIntensiveOperation.java index 59196bf31a7bcc5a3df8990750a18e63aa47b1ba..c8ce91a08672c2a511dcc531cb0fb09b3bdace46 100644 --- a/src/com/t_oster/liblasercut/TimeIntensiveOperation.java +++ b/src/com/t_oster/liblasercut/TimeIntensiveOperation.java @@ -30,40 +30,48 @@ import java.util.List; public abstract class TimeIntensiveOperation { - private List<ProgressListener> listeners = null; + private final List<ProgressListener> listeners = new LinkedList<ProgressListener>(); private List<ProgressListener> getListeners() { - if (listeners == null) - { - listeners = new LinkedList<ProgressListener>(); - } return listeners; } public void addProgressListener(ProgressListener l) { - getListeners().add(l); + synchronized(listeners) + { + getListeners().add(l); + } } public void removeProgressListener(ProgressListener l) { - getListeners().remove(l); + synchronized(listeners) + { + getListeners().remove(l); + } } public void fireProgressChanged(int progress) { - for (ProgressListener l : getListeners()) + synchronized(listeners) { - l.progressChanged(this, progress); + for (ProgressListener l : getListeners()) + { + l.progressChanged(this, progress); + } } } public void fireTaskChanged(String name) { - for (ProgressListener l : getListeners()) + synchronized(listeners) { - l.taskChanged(this, name); + for (ProgressListener l : getListeners()) + { + l.taskChanged(this, name); + } } } private int progress = 0;