1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-17 14:05:23 +02:00

Fix concurrent mod exception with listeners.

Change-Id: If5088b530606421b573359b7755a01e45e32f0a7
This commit is contained in:
Doug Schaefer 2017-06-12 14:53:43 -04:00
parent c5a2c150ae
commit accbe9abc4

View file

@ -610,6 +610,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
private void fireActiveLaunchDescriptorChanged() {
if (!initialized)
return;
synchronized (listeners) {
for (ILaunchBarListener listener : listeners) {
try {
listener.activeLaunchDescriptorChanged(activeLaunchDesc);
@ -618,6 +619,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
}
}
}
}
@Override
public ILaunchMode[] getLaunchModes() throws CoreException {
@ -673,6 +675,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
private void fireActiveLaunchModeChanged() {
if (!initialized)
return;
synchronized (listeners) {
for (ILaunchBarListener listener : listeners) {
try {
listener.activeLaunchModeChanged(activeLaunchMode);
@ -681,6 +684,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
}
}
}
}
private void storeLaunchMode(ILaunchDescriptor desc, ILaunchMode mode) {
if (mode != null) {
@ -764,6 +768,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
private void fireActiveLaunchTargetChanged() {
if (!initialized)
return;
synchronized (listeners) {
for (ILaunchBarListener listener : listeners) {
try {
listener.activeLaunchTargetChanged(activeLaunchTarget);
@ -772,6 +777,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
}
}
}
}
private ILaunchTarget getDefaultLaunchTarget(ILaunchDescriptor descriptor) {
ILaunchTarget[] targets = getLaunchTargets(descriptor);
@ -823,16 +829,20 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
public void addListener(ILaunchBarListener listener) {
if (listener == null)
return;
synchronized (listeners) {
if (!listeners.contains(listener)) // cannot add duplicates
listeners.add(listener);
}
}
@Override
public void removeListener(ILaunchBarListener listener) {
if (listener == null)
return;
synchronized (listener) {
listeners.remove(listener);
}
}
@Override
public void launchConfigurationAdded(ILaunchConfiguration configuration) {
@ -912,6 +922,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
private void fireLaunchTargetsChanged() {
if (!initialized)
return;
synchronized (listeners) {
for (ILaunchBarListener listener : listeners) {
try {
listener.launchTargetsChanged();
@ -920,6 +931,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene
}
}
}
}
@Override
public void launchTargetAdded(ILaunchTarget target) {