Browse Source

Task cancellation fix

David Sehnal 5 years ago
parent
commit
26e6e0ab72
3 changed files with 7 additions and 7 deletions
  1. 3 3
      src/mol-plugin/context.ts
  2. 1 1
      src/mol-plugin/ui/task.tsx
  3. 3 3
      src/mol-plugin/util/task-manager.ts

+ 3 - 3
src/mol-plugin/context.ts

@@ -11,7 +11,7 @@ import { CustomPropertyRegistry } from '../mol-model-props/common/custom-propert
 import { StructureRepresentationRegistry } from '../mol-repr/structure/registry';
 import { VolumeRepresentationRegistry } from '../mol-repr/volume/registry';
 import { State, StateTransform, StateTransformer } from '../mol-state';
-import { Task } from '../mol-task';
+import { Task, Progress } from '../mol-task';
 import { ColorTheme } from '../mol-theme/color';
 import { SizeTheme } from '../mol-theme/size';
 import { ThemeRegistryContext } from '../mol-theme/theme';
@@ -176,8 +176,8 @@ export class PluginContext {
         return this.tasks.run(task);
     }
 
-    requestTaskAbort(task: Task<any> | number, reason?: string) {
-        this.tasks.requestAbort(task, reason);
+    requestTaskAbort(progress: Progress, reason?: string) {
+        this.tasks.requestAbort(progress, reason);
     }
 
     dispose() {

+ 1 - 1
src/mol-plugin/ui/task.tsx

@@ -34,7 +34,7 @@ export class BackgroundTaskProgress extends PluginUIComponent<{ }, { tracked: Or
 class ProgressEntry extends PluginUIComponent<{ event: TaskManager.ProgressEvent }> {
 
     abort = () => {
-        this.plugin.requestTaskAbort(this.props.event.id, 'User Request');
+        this.plugin.requestTaskAbort(this.props.event.progress, 'User Request');
     }
 
     render() {

+ 3 - 3
src/mol-plugin/util/task-manager.ts

@@ -22,7 +22,7 @@ class TaskManager {
 
     private track(internalId: number, taskId: number) {
         return (progress: Progress) => {
-            if (progress.canAbort && progress.requestAbort && this.abortRequests.has(taskId)) {
+            if (progress.canAbort && progress.requestAbort && this.abortRequests.has(progress.root.progress.taskId)) {
                 progress.requestAbort(this.abortRequests.get(taskId));
             }
             const elapsed = now() - progress.root.progress.startedTime;
@@ -45,8 +45,8 @@ class TaskManager {
         }
     }
 
-    requestAbort(task: Task<any> | number, reason?: string) {
-        this.abortRequests.set(typeof task === 'number' ? task : task.id, reason);
+    requestAbort(progress: Progress, reason?: string) {
+        this.abortRequests.set(progress.root.progress.taskId, reason);
     }
 
     dispose() {