Bug 565295 - Improve GenericEditor createMarker performance
Add a debounce of 500ms before executing the job to set markers.
Change-Id: Ibd59563f8ad836a46cc3bb7d905a6772eb38b8fb
Signed-off-by: Eugen Neufeld <eneufeld@eclipsesource.com>
diff --git a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
index 27fa122..bb1fe67 100644
--- a/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
+++ b/bundles/org.eclipse.emfforms.editor/src/org/eclipse/emfforms/spi/editor/GenericEditor.java
@@ -351,9 +351,13 @@
}
private synchronized void initMarkers() {
- if (getDiagnosticCache() == null || reloading || markerJob.get() != null) {
+ if (getDiagnosticCache() == null || reloading) {
return;
}
+ if (markerJob.get() != null) {
+ markerJob.get().cancel();
+ markerJob.compareAndSet(markerJob.get(), null);
+ }
final Job job = Job.create(Messages.GenericEditor_ValidationMarkersJobName, monitor -> {
try {
@@ -365,10 +369,10 @@
markerJob.compareAndSet(Job.getJobManager().currentJob(), null);
}
});
- job.setPriority(Job.SHORT);
+ job.setPriority(Job.LONG);
if (markerJob.compareAndSet(null, job)) {
- job.schedule();
+ job.schedule(500);
}
}
@@ -405,8 +409,7 @@
if (!file.isPresent()) {
return;
}
- file.get().deleteMarkers("org.eclipse.core.resources.problemmarker", false, //$NON-NLS-1$
- IResource.DEPTH_ZERO);
+ markerHelper.deleteMarkers(file.get());
}
/**