diff options
Diffstat (limited to 'launch')
2 files changed, 38 insertions, 13 deletions
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java index 297359f6762..83752285352 100644 --- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java +++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/docker/launcher/ContainerTargetTypeProvider.java @@ -123,12 +123,25 @@ public class ContainerTargetTypeProvider DockerConnectionManager.getInstance() .addConnectionManagerListener(this); - // call the recheckConfigs method in case any disabled targets are now - // ok - ICBuildConfigurationManager mgr = CCorePlugin - .getService(ICBuildConfigurationManager.class); - ICBuildConfigurationManager2 manager = (ICBuildConfigurationManager2) mgr; - manager.recheckConfigs(); + // re-check configs in case an enabled Connection has made old configs + // valid again do this in a separate job to prevent a possible + // deadlock trying to get the lock on the CBuildConfigurationManager + // "configs" map (Bug 540085) + Job checkConfigs = new Job("Check configs") { //$NON-NLS-1$ + @Override + protected IStatus run(IProgressMonitor monitor) { + // call the recheckConfigs method in case any disabled targets + // are now + // ok + ICBuildConfigurationManager mgr = CCorePlugin + .getService(ICBuildConfigurationManager.class); + ICBuildConfigurationManager2 cbuildmanager = (ICBuildConfigurationManager2) mgr; + cbuildmanager.recheckConfigs(); + return Status.OK_STATUS; + } + }; + checkConfigs.setUser(true); + checkConfigs.schedule(); try { launchbarManager.setActiveLaunchTarget(defaultTarget); diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChainProvider.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChainProvider.java index defb52a92a8..9bcad227db2 100644 --- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChainProvider.java +++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChainProvider.java @@ -98,13 +98,25 @@ public class ContainerGCCToolChainProvider DockerConnectionManager.getInstance() .addConnectionManagerListener(this); - // call the recheckConfigs method in case any disabled targets are now - // ok - ICBuildConfigurationManager mgr = CCorePlugin - .getService(ICBuildConfigurationManager.class); - ICBuildConfigurationManager2 cbuildmanager = (ICBuildConfigurationManager2) mgr; - cbuildmanager.recheckConfigs(); - + // re-check configs in case an enabled Connection has made old configs + // valid again do this in a separate job to prevent a possible + // deadlock trying to get the lock on the CBuildConfigurationManager + // "configs" map (Bug 540085) + Job checkConfigs = new Job("Check configs") { //$NON-NLS-1$ + @Override + protected IStatus run(IProgressMonitor monitor) { + // call the recheckConfigs method in case any disabled targets + // are now + // ok + ICBuildConfigurationManager mgr = CCorePlugin + .getService(ICBuildConfigurationManager.class); + ICBuildConfigurationManager2 cbuildmanager = (ICBuildConfigurationManager2) mgr; + cbuildmanager.recheckConfigs(); + return Status.OK_STATUS; + } + }; + checkConfigs.setUser(true); + checkConfigs.schedule(); } @Override |