1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-14 11:45:38 +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; package org.eclipse.launchbar.core.internal.target;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -35,7 +36,7 @@ public class LaunchTargetManager implements ILaunchTargetManager {
private Map<String, Map<String, ILaunchTarget>> targets; private Map<String, Map<String, ILaunchTarget>> targets;
private Map<String, IConfigurationElement> typeElements; private Map<String, IConfigurationElement> typeElements;
private Map<String, ILaunchTargetProvider> typeProviders = new LinkedHashMap<>(); 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 DELIMETER1 = ","; //$NON-NLS-1$
private static final String DELIMETER2 = ":"; //$NON-NLS-1$ private static final String DELIMETER2 = ":"; //$NON-NLS-1$
@ -201,8 +202,10 @@ public class LaunchTargetManager implements ILaunchTargetManager {
Activator.log(e); Activator.log(e);
} }
for (ILaunchTargetListener listener : listeners) { synchronized (listeners) {
listener.launchTargetAdded(target); for (ILaunchTargetListener listener : listeners) {
listener.launchTargetAdded(target);
}
} }
return target; return target;
@ -226,16 +229,20 @@ public class LaunchTargetManager implements ILaunchTargetManager {
Activator.log(e); Activator.log(e);
} }
for (ILaunchTargetListener listener : listeners) { synchronized (listeners) {
listener.launchTargetRemoved(target); for (ILaunchTargetListener listener : listeners) {
listener.launchTargetRemoved(target);
}
} }
} }
} }
@Override @Override
public void targetStatusChanged(ILaunchTarget target) { public void targetStatusChanged(ILaunchTarget target) {
for (ILaunchTargetListener listener : listeners) { synchronized (listeners) {
listener.launchTargetStatusChanged(target); for (ILaunchTargetListener listener : listeners) {
listener.launchTargetStatusChanged(target);
}
} }
} }