From 8cf1d7897809ec5d3877d75fbd9fe006bb1a660b Mon Sep 17 00:00:00 2001 From: Ken Ryall Date: Thu, 3 Jun 2010 17:19:19 +0000 Subject: [PATCH] Bug 315461 - [launch] Invalid thread access exception during launch --- .../cdt/dsf/debug/ui/DsfDebugUITools.java | 26 ++++++++++-------- .../org/eclipse/cdt/launch/LaunchUtils.java | 27 +++++++++++-------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/DsfDebugUITools.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/DsfDebugUITools.java index 933c01f2371..2f5f152b1f6 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/DsfDebugUITools.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/DsfDebugUITools.java @@ -34,18 +34,22 @@ public class DsfDebugUITools { * @since 2.1 */ @SuppressWarnings("unchecked") - public static void enableActivity(String activityID, boolean enableit) + public static void enableActivity(final String activityID, final boolean enableit) { - IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); - IActivityManager activityManager = workbenchActivitySupport.getActivityManager(); - Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); - boolean changed = false; - if (enableit) - changed = enabledActivityIds.add(activityID); - else - changed = enabledActivityIds.remove(activityID); - if (changed) - workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds); + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); + IActivityManager activityManager = workbenchActivitySupport.getActivityManager(); + Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); + boolean changed = false; + if (enableit) + changed = enabledActivityIds.add(activityID); + else + changed = enabledActivityIds.remove(activityID); + if (changed) + workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds); + } + }); } } diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java index 077add98a1c..d5fb53c28aa 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java @@ -122,18 +122,23 @@ public class LaunchUtils { * @since 6.1 */ @SuppressWarnings("unchecked") - public static void enableActivity(String activityID, boolean enableit) + public static void enableActivity(final String activityID, final boolean enableit) { - IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); - IActivityManager activityManager = workbenchActivitySupport.getActivityManager(); - Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); - boolean changed = false; - if (enableit) - changed = enabledActivityIds.add(activityID); - else - changed = enabledActivityIds.remove(activityID); - if (changed) - workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds); + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport(); + IActivityManager activityManager = workbenchActivitySupport.getActivityManager(); + Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds()); + boolean changed = false; + if (enableit) + changed = enabledActivityIds.add(activityID); + else + changed = enabledActivityIds.remove(activityID); + if (changed) + workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds); + } + }); + } }