From 2f4da42db3d7be03c123b786bf49bb486c122693 Mon Sep 17 00:00:00 2001 From: Michael Scharf Date: Fri, 20 Jun 2008 23:54:02 +0000 Subject: [PATCH] bug 237398: [terminal] Terminal get Invalid Thread Access when the title is set https://bugs.eclipse.org/bugs/show_bug.cgi?id=237398 --- .../internal/terminal/view/TerminalView.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java b/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java index c9135cddcd5..d32af3e2763 100644 --- a/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java +++ b/terminal/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java @@ -176,10 +176,18 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi onTerminalStatus(); } }; - if(Thread.currentThread()==Display.getDefault().getThread()) + runInDisplayThread(runnable); + } + + /** + * @param runnable run in display thread + */ + private void runInDisplayThread(Runnable runnable) { + if(Display.findDisplay(Thread.currentThread())!=null) runnable.run(); - else - Display.getDefault().syncExec(runnable); + else if(PlatformUI.isWorkbenchRunning()) + PlatformUI.getWorkbench().getDisplay().syncExec(runnable); + // else should not happen and we ignore it... } @@ -287,7 +295,15 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalLi fActionTerminalSettings.setEnabled(bEnabled); } - public void setTerminalTitle(String strTitle) { + public void setTerminalTitle(final String strTitle) { + runInDisplayThread(new Runnable() { + + public void run() { + runSetTitle(strTitle); + }}); + } + + private void runSetTitle(String strTitle) { if (fCtlTerminal.isDisposed()) return;