1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-11 02:05:39 +02:00

Bug 520029 - Synchronize access to listeners in LaunchTargetManager.

Change-Id: I339fe158341890caa95537b332da29717f7bc5a1
Signed-off-by: Roland Grunberg <rgrunber@redhat.com>
This commit is contained in:
Roland Grunberg 2017-07-20 14:47:14 -04:00
parent 0a0ff7b964
commit 4e6e053c6c

View file

@ -8,6 +8,7 @@
package org.eclipse.launchbar.core.internal.target;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
@ -35,7 +36,7 @@ public class LaunchTargetManager implements ILaunchTargetManager {
private Map<String, Map<String, ILaunchTarget>> targets;
private Map<String, IConfigurationElement> typeElements;
private Map<String, ILaunchTargetProvider> typeProviders = new LinkedHashMap<>();
private List<ILaunchTargetListener> listeners = new LinkedList<>();
private List<ILaunchTargetListener> listeners = Collections.synchronizedList(new LinkedList<>());
private static final String DELIMETER1 = ","; //$NON-NLS-1$
private static final String DELIMETER2 = ":"; //$NON-NLS-1$
@ -201,8 +202,10 @@ public class LaunchTargetManager implements ILaunchTargetManager {
Activator.log(e);
}
for (ILaunchTargetListener listener : listeners) {
listener.launchTargetAdded(target);
synchronized (listeners) {
for (ILaunchTargetListener listener : listeners) {
listener.launchTargetAdded(target);
}
}
return target;
@ -226,16 +229,20 @@ public class LaunchTargetManager implements ILaunchTargetManager {
Activator.log(e);
}
for (ILaunchTargetListener listener : listeners) {
listener.launchTargetRemoved(target);
synchronized (listeners) {
for (ILaunchTargetListener listener : listeners) {
listener.launchTargetRemoved(target);
}
}
}
}
@Override
public void targetStatusChanged(ILaunchTarget target) {
for (ILaunchTargetListener listener : listeners) {
listener.launchTargetStatusChanged(target);
synchronized (listeners) {
for (ILaunchTargetListener listener : listeners) {
listener.launchTargetStatusChanged(target);
}
}
}