Device, method, and graphical user interface for collaborative editing in documents
First Claim
1. A method of maintaining a consistent output based on concurrent drawing edits received at multiple collaborating devices, including:
- at a first device of the multiple collaborating devices, wherein the first device comprises one or more processors, memory, and a display;
maintaining a command sequence for a drawing currently rendered at the first device, wherein the command sequence includes a plurality of past drawing commands sorted according to respective sequence numbers of the past drawing commands, and wherein a sequence number of a drawing command is defined by (1) a device identifier for a device at which the drawing command was first received, (2) a primary local sequence number representing a local synchronization epoch during which the drawing command was first received, and (3) a secondary local sequence number representing an order of the drawing command within the local synchronization epoch;
receiving a plurality of additional drawing commands from two or more devices of the multiple collaborating devices, each of the plurality of additional drawing commands having a respective sequence number;
updating the command sequence, including merging and sorting the plurality of additional drawing commands and the plurality of past drawing commands in accordance with an ordering rule based on the respective sequence numbers of the plurality of past drawing commands and the plurality of additional drawing commands, wherein the ordering rule gives more significance to the primary local sequence number than the device identifier, and gives more significance to the device identifier than to the secondary local sequence number when comparing the respective sequence numbers; and
re-rendering at least a portion of the drawing based on the command sequence after updating the command sequence.
1 Assignment
0 Petitions
Accused Products
Abstract
A first electronic device with a display maintains a consistent output based on concurrent drawing edits received at multiple collaborating devices. The first device maintains a command sequence for a drawing currently rendered at the first device. The command sequence includes a plurality of past drawing commands sorted according to respective sequence numbers of the past drawing commands. The first device receives a plurality of additional drawing commands from two or more devices of the multiple collaborating devices, each of the plurality of additional drawing commands having a respective sequence number. The first device updates the command sequence, including merging and sorting the plurality of additional drawing commands and the plurality of past drawing commands in accordance with an ordering rule. The first device re-renders at least a portion of the drawing based on the command sequence after updating the command sequence.
-
Citations
27 Claims
-
1. A method of maintaining a consistent output based on concurrent drawing edits received at multiple collaborating devices, including:
at a first device of the multiple collaborating devices, wherein the first device comprises one or more processors, memory, and a display; maintaining a command sequence for a drawing currently rendered at the first device, wherein the command sequence includes a plurality of past drawing commands sorted according to respective sequence numbers of the past drawing commands, and wherein a sequence number of a drawing command is defined by (1) a device identifier for a device at which the drawing command was first received, (2) a primary local sequence number representing a local synchronization epoch during which the drawing command was first received, and (3) a secondary local sequence number representing an order of the drawing command within the local synchronization epoch; receiving a plurality of additional drawing commands from two or more devices of the multiple collaborating devices, each of the plurality of additional drawing commands having a respective sequence number; updating the command sequence, including merging and sorting the plurality of additional drawing commands and the plurality of past drawing commands in accordance with an ordering rule based on the respective sequence numbers of the plurality of past drawing commands and the plurality of additional drawing commands, wherein the ordering rule gives more significance to the primary local sequence number than the device identifier, and gives more significance to the device identifier than to the secondary local sequence number when comparing the respective sequence numbers; and re-rendering at least a portion of the drawing based on the command sequence after updating the command sequence. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
10. A first electronic device, comprising:
-
a display; one or more processors; memory; and one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for; maintaining a command sequence for a drawing currently rendered at the first electronic device, wherein the command sequence includes a plurality of past drawing commands sorted according to respective sequence numbers of the past drawing commands, and wherein a sequence number of a drawing command is defined by (1) a device identifier for a device at which the drawing command was first received, (2) a primary local sequence number representing a local synchronization epoch during which the drawing command was first received, and (3) a secondary local sequence number representing an order of the drawing command within the local synchronization epoch; receiving a plurality of additional drawing commands from two or more devices of multiple collaborating devices, each of the plurality of additional drawing commands having a respective sequence number; updating the command sequence, including merging and sorting the plurality of additional drawing commands and the plurality of past drawing commands in accordance with an ordering rule based on the respective sequence numbers of the plurality of past drawing commands and the plurality of additional drawing commands, wherein the ordering rule gives more significance to the primary local sequence number than the device identifier, and gives more significance to the device identifier than to the secondary local sequence number when comparing the respective sequence numbers; and re-rendering at least a portion of the drawing based on the command sequence after updating the command sequence. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by a first electronic device with a display, cause the first electronic device to:
-
maintain a command sequence for a drawing currently rendered at the first electronic device, wherein the command sequence includes a plurality of past drawing commands sorted according to respective sequence numbers of the past drawing commands, and wherein a sequence number of a drawing command is defined by (1) a device identifier for a device at which the drawing command was first received, (2) a primary local sequence number representing a local synchronization epoch during which the drawing command was first received, and (3) a secondary local sequence number representing an order of the drawing command within the local synchronization epoch; receive a plurality of additional drawing commands from two or more devices of multiple collaborating devices, each of the plurality of additional drawing commands having a respective sequence number; update the command sequence, including merging and sorting the plurality of additional drawing commands and the plurality of past drawing commands in accordance with an ordering rule based on the respective sequence numbers of the plurality of past drawing commands and the plurality of additional drawing commands, wherein the ordering rule gives more significance to the primary local sequence number than the device identifier, and gives more significance to the device identifier than to the secondary local sequence number when comparing the respective sequence numbers; and re-render at least a portion of the drawing based on the command sequence after updating the command sequence. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
Specification