|
Lines 217-222
Link Here
|
| 217 |
// System.out.println("changeState (" + job + "): " + printState(oldState) +"->" + printState(newState)); |
217 |
// System.out.println("changeState (" + job + "): " + printState(oldState) +"->" + printState(newState)); |
| 218 |
switch (oldState) { |
218 |
switch (oldState) { |
| 219 |
case Job.NONE : |
219 |
case Job.NONE : |
|
|
220 |
case InternalJob.ABOUT_TO_SCHEDULE: |
| 220 |
break; |
221 |
break; |
| 221 |
case InternalJob.BLOCKED : |
222 |
case InternalJob.BLOCKED : |
| 222 |
//remove this job from the linked list of blocked jobs |
223 |
//remove this job from the linked list of blocked jobs |
|
Lines 260-265
Link Here
|
| 260 |
job.setStartTime(InternalJob.T_NONE); |
261 |
job.setStartTime(InternalJob.T_NONE); |
| 261 |
running.add(job); |
262 |
running.add(job); |
| 262 |
break; |
263 |
break; |
|
|
264 |
case InternalJob.ABOUT_TO_SCHEDULE: |
| 265 |
break; |
| 263 |
default : |
266 |
default : |
| 264 |
Assert.isLegal(false, "Invalid job state: " + job + ", state: " + newState); //$NON-NLS-1$ //$NON-NLS-2$ |
267 |
Assert.isLegal(false, "Invalid job state: " + job + ", state: " + newState); //$NON-NLS-1$ //$NON-NLS-2$ |
| 265 |
} |
268 |
} |
|
Lines 285-291
Link Here
|
| 285 |
protected IProgressMonitor createMonitor(InternalJob job, IProgressMonitor group, int ticks) { |
288 |
protected IProgressMonitor createMonitor(InternalJob job, IProgressMonitor group, int ticks) { |
| 286 |
synchronized (lock) { |
289 |
synchronized (lock) { |
| 287 |
//group must be set before the job is scheduled |
290 |
//group must be set before the job is scheduled |
| 288 |
if (job.internalGetState() != Job.NONE) |
291 |
//this includes the ABOUT_TO_SCHEDULE state, during which it is still |
|
|
292 |
//valid to set the progress monitor |
| 293 |
if (job.getState() != Job.NONE) |
| 289 |
return null; |
294 |
return null; |
| 290 |
IProgressMonitor monitor = null; |
295 |
IProgressMonitor monitor = null; |
| 291 |
if (progressProvider != null) |
296 |
if (progressProvider != null) |
|
Lines 792-799
Link Here
|
| 792 |
return; |
797 |
return; |
| 793 |
} |
798 |
} |
| 794 |
//can't schedule a job that is waiting or sleeping |
799 |
//can't schedule a job that is waiting or sleeping |
| 795 |
if (job.getState() != Job.NONE) |
800 |
if (job.internalGetState() != Job.NONE) |
| 796 |
return; |
801 |
return; |
|
|
802 |
//remember that we are about to schedule the job |
| 803 |
//to prevent multiple schedule attempts from succeeding (bug 68452) |
| 804 |
changeState(job, InternalJob.ABOUT_TO_SCHEDULE); |
| 797 |
} |
805 |
} |
| 798 |
//notify listeners outside sync block |
806 |
//notify listeners outside sync block |
| 799 |
jobListeners.scheduled((Job) job, delay, reschedule); |
807 |
jobListeners.scheduled((Job) job, delay, reschedule); |