Patent ID: 8484291

Claim:
A method of facilitating a remote viewing session over which presenter display information is exchanged between a presenter and at least one viewer, the method comprising the steps of: receiving a plurality of presenter updates, each presenter update containing one or more commands containing information related to changes to the presenter display information between subsequent points in time, each of the presenter updates further being associated with an end-of-update marker; storing the commands from the plurality of presenter updates in an update queue; as each presenter update is received, calculating whether any of the commands of the received presenter update render one or a subset of the commands stored in the update queue obsolete, and marking the one or the subset of the commands as prunable relative to the received command or the end-of-update marker associated with the received presenter update; maintaining a position of each viewer in the update queue indicating which commands in the queue have been transmitted to the viewer and which commands have not been transmitted to the viewer such that those commands that have not been transmitted to the viewer are maintained in the update queue ahead of the position of the viewer in the update queue; selecting one of the end-of-update markers as a target end-of-update marker for a first viewer update to be transmitted to the first viewer; determining whether any commands in the queue between the position of the first viewer and the target end-of-update marker are marked as prunable relative to the target end of update marker or relative to another command stored in the queue between the position of the first viewer and the target end-of-update marker; including all commands from the queue in the viewer update between the position of the first viewer and the target end-of-update marker that are not marked as prunable relative to the target end of update marker or relative to another command stored in the queue between the position of the first viewer and the target end-of-update marker, and not including commands in the viewer update that are marked as prunable relative to the target end of update marker or relative to another command stored in the queue between the position of the first viewer and the target end-of-update marker.