mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-13 11:15:38 +02:00
Bug 518627: Squelch Device Disposed exception at shutdown
Note, can't simply check isDisposed as that still leaves a race condition between isDisposed call and asyncExec call Change-Id: I3e0e196d9d1dd9b9c8d4048a1aec55405d6dd6e0
This commit is contained in:
parent
bd4656755c
commit
d8c3c0967d
2 changed files with 19 additions and 2 deletions
|
@ -23,6 +23,7 @@ import org.eclipse.debug.core.ILaunchConfiguration;
|
||||||
import org.eclipse.debug.ui.DebugUITools;
|
import org.eclipse.debug.ui.DebugUITools;
|
||||||
import org.eclipse.jface.preference.IPreferenceStore;
|
import org.eclipse.jface.preference.IPreferenceStore;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.SWTException;
|
||||||
import org.eclipse.swt.widgets.Display;
|
import org.eclipse.swt.widgets.Display;
|
||||||
import org.eclipse.ui.PlatformUI;
|
import org.eclipse.ui.PlatformUI;
|
||||||
import org.eclipse.ui.console.IConsoleView;
|
import org.eclipse.ui.console.IConsoleView;
|
||||||
|
@ -145,7 +146,14 @@ public class GdbBasicCliConsole extends IOConsole implements IGDBDebuggerConsole
|
||||||
String newName = computeName();
|
String newName = computeName();
|
||||||
String name = getName();
|
String name = getName();
|
||||||
if (!name.equals(newName)) {
|
if (!name.equals(newName)) {
|
||||||
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> setName(newName));
|
try {
|
||||||
|
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> setName(newName));
|
||||||
|
} catch (SWTException e) {
|
||||||
|
// display may be disposed, so ignore the exception
|
||||||
|
if (e.code != SWT.ERROR_WIDGET_DISPOSED) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.debug.core.ILaunch;
|
import org.eclipse.debug.core.ILaunch;
|
||||||
import org.eclipse.debug.core.ILaunchConfiguration;
|
import org.eclipse.debug.core.ILaunchConfiguration;
|
||||||
import org.eclipse.debug.ui.DebugUITools;
|
import org.eclipse.debug.ui.DebugUITools;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.SWTException;
|
||||||
import org.eclipse.ui.PlatformUI;
|
import org.eclipse.ui.PlatformUI;
|
||||||
import org.eclipse.ui.console.AbstractConsole;
|
import org.eclipse.ui.console.AbstractConsole;
|
||||||
import org.eclipse.ui.console.IConsoleView;
|
import org.eclipse.ui.console.IConsoleView;
|
||||||
|
@ -59,7 +61,14 @@ public class GdbFullCliConsole extends AbstractConsole implements IGDBDebuggerCo
|
||||||
String newName = computeName();
|
String newName = computeName();
|
||||||
String name = getName();
|
String name = getName();
|
||||||
if (!name.equals(newName)) {
|
if (!name.equals(newName)) {
|
||||||
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> setName(newName));
|
try {
|
||||||
|
PlatformUI.getWorkbench().getDisplay().asyncExec(() -> setName(newName));
|
||||||
|
} catch (SWTException e) {
|
||||||
|
// display may be disposed, so ignore the exception
|
||||||
|
if (e.code != SWT.ERROR_WIDGET_DISPOSED) {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue