Skip to content

Commit 7f3a5ca

Browse files
committed
Console does not need to start UI job every second
In order to update console status line, ProcessConsole.computeName() calls resetName() every second once console is created. This causes new UI job to be started every second via timerExec(), with code already being executed on UI thread. It is a misuse of Jobs framework, it makes use of jobs dispatching where no jobs are needed. The code can use Display.execute() for a more lightweight console status update. As a nice side effect no jobs are flashing in the Progress view every second (if system jobs are shown).
1 parent 39c64e8 commit 7f3a5ca

1 file changed

Lines changed: 8 additions & 15 deletions

File tree

debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@
106106
import org.eclipse.ui.editors.text.EditorsUI;
107107
import org.eclipse.ui.part.FileEditorInput;
108108
import org.eclipse.ui.part.IPageBookViewPage;
109-
import org.eclipse.ui.progress.UIJob;
110109

111110
/**
112111
* A console for a system process with standard I/O streams.
@@ -115,7 +114,7 @@
115114
*/
116115
@SuppressWarnings("deprecation")
117116
public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSetListener, IPropertyChangeListener {
118-
private IProcess fProcess = null;
117+
private IProcess fProcess;
119118

120119
private final List<StreamListener> fStreamListeners = new ArrayList<>();
121120

@@ -136,9 +135,9 @@ public class ProcessConsole extends IOConsole implements IConsole, IDebugEventSe
136135
private FileOutputStream fFileOutputStream;
137136

138137
private boolean fAllocateConsole = true;
139-
private String fStdInFile = null;
138+
private String fStdInFile;
140139

141-
private volatile boolean fStreamsClosed = false;
140+
private volatile boolean fStreamsClosed;
142141

143142
/**
144143
* Create process console with default encoding.
@@ -649,18 +648,12 @@ private synchronized void resetName(boolean changed) {
649648
final String newName = computeName();
650649
String name = getName();
651650
if (!name.equals(newName)) {
652-
UIJob job = new UIJob("Update console title") { //$NON-NLS-1$
653-
@Override
654-
public IStatus runInUIThread(IProgressMonitor monitor) {
655-
ProcessConsole.this.setName(newName);
656-
if (changed) {
657-
warnOfContentChange();
658-
}
659-
return Status.OK_STATUS;
651+
DebugUIPlugin.getStandardDisplay().execute(() -> {
652+
setName(newName);
653+
if (changed) {
654+
warnOfContentChange();
660655
}
661-
};
662-
job.setSystem(true);
663-
job.schedule();
656+
});
664657
}
665658
}
666659

0 commit comments

Comments
 (0)