IP Library Granted Patent US 11,645,107
Granted Patent B2
US 11,645,107 · App. 17/148,295 · Granted May 9, 2023

Processing multi-frame tasks in a multi-threaded digital design system

Inventor: Tarun Beri (Punjab, IN)
Assignee: Adobe Inc.
G06F9/4843G06F9/54
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,645,107
App. No.
17/148,295
Granted
May 9, 2023
Kind
B2
Abstract

Embodiments are disclosed for processing multi-frame tasks in a multi-threaded digital design system. In particular, in one or more embodiments, the disclosed systems and methods comprise receiving, by a first thread, a first set of inputs on a graphical user interface, determining that the first set of inputs represent a first multi-frame request, wherein a multi-frame request includes a series of inputs that produce a continuous response, generating a first multi-frame edit task, the first multi-frame edit task including a communications channel between the first thread and a second thread for caching the first set of inputs, enqueuing the first multi-frame edit task in a task queue of the second thread, processing, by the second thread, the first multi-frame edit task.

Claims (74)

1. A computer-implemented method, comprising:

receiving, by a first thread, a first set of inputs on a graphical user interface;

receiving, by the first thread, a second set of inputs on the graphical user interface, wherein at least one input of the second set of inputs is received concurrently with at least one input of the first set of inputs;

determining that the first set of inputs represent a first multi-frame request, wherein a multi-frame request includes a series of inputs that produce a continuous response;

determining that the second set of inputs represent a second multi-frame edit request;

generating a first multi-frame edit task, the first multi-frame edit task including a communications channel between the first thread and a second thread for caching the first set of inputs;

generating a second multi-frame edit task, the second multi-frame edit task including the second set of inputs;

enqueuing the first multi-frame edit task in a task queue of the second thread;

processing, by the second thread, the first multi-frame edit task;

determining that the second thread is processing an edit task; and

in response to determining that the second thread is processing an edit task, enqueuing the second multi-frame edit task in the task queue of the second thread.

2. The computer-implemented method of claim 1 , wherein processing the first multi-frame edit task comprises:

dequeuing the first multi-frame edit task from the task queue;

processing, by the second thread, the first set of inputs to generate at least one output; and

sending the at least one output to the first thread.

3. The computer-implemented method of claim 2 , wherein processing the first set of inputs comprises:

dequeuing the communications channel from the task queue; and

replaying the first set of inputs from the communications channel.

4. The computer-implemented method of claim 1 , wherein generating the second multi-frame edit task comprises:

creating a second communications channel between the first thread and the second thread for caching the second set of inputs.

5. The computer-implemented method of claim 1 , further comprising:

terminating the communications channel between the first thread and the second thread in response to processing a sentinel value in the first multi-frame edit task.

6. The computer-implemented method of claim 1 , wherein processing the first multi-frame edit task comprises:

determining that the first set of inputs in the first multi-frame edit task indicate a task type where a final input in the first set of inputs defines the first multi-frame edit task; and

in response to determining that the first set of inputs in the first multi-frame edit task indicate the task type where the final input in the first set of inputs defines the first multi-frame edit task, bypassing one or more inputs of the first set of inputs other than the final input.

7. The computer-implemented method of claim 1 , further comprising:

receiving a request to undo the first multi-frame edit task; and

undoing the first multi-frame edit task based on the first set of inputs from the communications channel.

8. A non-transitory computer-readable storage medium including instructions stored thereon which, when executed by at least one processor, cause the at least one processor to:

receive, by a first thread, a first set of inputs on a graphical user interface;

receive, by the first thread, a second set of inputs on the graphical user interface, wherein at least one input of the second set of inputs is received concurrently with at least one input of the first set of inputs;

determine that the first set of inputs represent a first multi-frame request, wherein a multi-frame frame request includes a series of inputs that produce a continuous response;

determine that the second set of inputs represent a second multi-frame edit request;

generate a first multi-frame edit task, the first multi-frame edit task including a communications channel between the first thread and a second thread for caching the first set of inputs;

generate a second multi-frame edit task, the second multi-frame edit task including the second set of inputs;

enqueue the first multi-frame edit task in a task queue of the second thread;

process, by the second thread, the first multi-frame edit task;

determining that the second thread is processing an edit task; and

in response to determining that the second thread is processing an edit task, enqueuing the second multi-frame edit task in the task queue of the second thread.

9. The non-transitory computer-readable storage medium of claim 8 , wherein processing the first multi-frame edit task comprises:

determining that the second thread is not currently processing an edit task;

processing, by the second thread, the first set of inputs to generate at least one output; and

sending the at least one output to the first thread.

10. The non-transitory computer-readable storage medium of claim 9 , wherein processing the first set of inputs comprises:

dequeuing the communications channel from the task queue; and

replaying the first set of inputs from the communications channel.

11. The non-transitory computer-readable storage medium of claim 8 , wherein generating the second multi-frame edit task comprises:

creating a second communications channel between the first thread and the second thread for caching the second set of inputs.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the instructions further cause the at least one processor to:

terminate the communications channel between the first thread and the second thread in response to processing a sentinel value in the first multi-frame edit task.

13. A system, comprising:

a computing device including a memory and at least one processor, the computing device implementing a digital design system,

wherein the memory includes instructions stored thereon which, when executed, cause the digital design system to:

receive, by a first thread, a first set of inputs on a graphical user interface;

receive, by the first thread, a second set of inputs on the graphical user interface, wherein at least one input of the second set of inputs is received concurrently with at least one input of the first set of inputs;

determine that the first set of inputs represent a first multi-frame request, wherein a multi-frame request includes a series of inputs that produce a continuous response;

determine that the second set of inputs represent a second multi-frame edit request;

generate a first multi-frame edit task, the first multi-frame edit task including a communications channel between the first thread and a second thread for caching the first set of inputs;

generate a second multi-frame edit task, the second multi-frame edit task including the second set of inputs;

enqueue the first multi-frame edit task in a task queue of the second thread;

process, by the second thread, the first multi-frame edit task;

determining that the second thread is processing an edit task; and

in response to determining that the second thread is processing an edit task, enqueuing the second multi-frame edit task in the task queue of the second thread.

14. The system of claim 13 , wherein the instructions to process the first multi-frame edit task, when executed, further causes the digital design system to:

determine that the second thread is not currently processing an edit task;

process, by the second thread, the first set of inputs to generate at least one output; and

send the at least one output to the first thread.

15. The system of claim 14 , wherein the instructions to process the first set of inputs, when executed, further causes the digital design system to:

dequeue the communications channel from the task queue; and

replay the first set of inputs from the communications channel.

16. The system of claim 13 , wherein the instructions to generate the second multi-frame edit task, when executed, further causes the digital design system to:

create a second communications channel between the first thread and the second thread for caching the second set of inputs.

17. The system of claim 13 , wherein the instructions further cause the digital design system to:

terminate the communications channel between the first thread and the second thread in response to processing a sentinel value in the first multi-frame edit task.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2021
From: BERI, TARUN
To: ADOBE INC.
Reel/Frame 054926/0588 →
Continuity (1)
Related Publication 20220222107A1 · Jul 14, 2022