IP Library Granted Patent US 9,052,796
Granted Patent B2
US 9,052,796 · App. 13/556,216 · Granted Jun 9, 2015

Asynchronous handling of an input stream dedicated to multiple targets

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 9,052,796
App. No.
13/556,216
Granted
Jun 9, 2015
Kind
B2
Abstract

An operating system has a stack of input events (an input stack) that provides input events from various input devices to applications. A dedicated thread or other entity is provided to handle input events that are related to pixel manipulation on the display, so as to provide a highly responsive display. The thread includes a buffer, and manages the buffer so as to ensure that messages a received by an application or other entity in chronological order.

Claims (39)

1. A computer-implemented process for communicating input events from input devices connected to a computer to applications running on the computer, the computer having an operating system comprising a first entity, and an application running on the computer and comprising a second entity, the application receiving the input events from the operating system through an input stack, the process comprising:

receiving, at the first entity in the operating system, input events from the input devices connected to the computer, the input events being directed to the application; and

the first entity in the operating system informing the second entity of the application about receipt of the input events;

after informing the second entity about receipt of the input events, the first entity in the operating system buffering the received input events in a buffer until the first entity receives information from the second entity indicating processing is to be performed by the first entity on the input events; and

after receiving the information from the second entity indicating processing is to be performed by the first entity on the input events, the first entity in the operating system processing the input events and placing at least some of the input events in the input stack, and removing the input events from the buffer; and

enabling the first entity to perform a user interface manipulation based on one of the input events while the second entity is unresponsive.

2. The computer-implemented process of claim 1 , wherein the input events relate to multiple contacts.

3. The computer-implemented process of claim 2 , wherein the input events relate to multiple targets in a user interface for the application that can be manipulated.

4. The computer-implemented process of claim 2 , wherein the first entity consumes the input events in the buffer in chronological order.

5. The computer-implemented process of claim 2 , wherein the first entity passes the input events to the second entity from the buffer in chronological order.

6. The computer-implemented process of claim 2 , further comprising forwarding the input events to the second entity when the second entity does not instruct the first entity to process the input events.

7. The computer-implemented process of claim 1 , further comprising detecting when one of the input events should be handled synchronously.

8. The computer-implemented process of claim 1 , further comprising detecting if one of the input events is stale as a result of the second entity being unresponsive.

9. A computer program product comprising:

a computer readable storage medium, including at least one of memory and nonvolatile storage;

computer program instructions stored on the computer readable storage medium that, when processed by a computer, instruct the computer to perform a process, wherein the computer comprises one or more input devices providing input events to be communicated to applications running on the computer, an operating system comprising a first entity, and an application running on the computer and comprising a second entity, the application receiving the input events from the operating system through an input stack, comprising:

receiving, at the first entity in the operating system, input events from the input devices connected to the computer, the input events being directed to the application; and

the first entity in the operating system informing the second entity of the application about receipt of the input events;

after informing the second entity about receipt of the input events, the first entity in the operating system buffering the received input events in a buffer until the first entity receives information from the second entity indicating processing is to be performed by the first entity on the input events; and

after receiving the information from the second entity indicating processing is to be performed by the first entity on the input events, the first entity in the operating system processing the input events and placing at least some of the input events in the input stack, and removing the input events from the buffer; and

enabling the first entity to perform a user interface manipulation based on one of the input events while the second entity is unresponsive.

10. The computer program product of claim 9 , wherein the input events relate to multiple contacts.

11. The computer program product of claim 10 , wherein the input events relate to multiple targets in a user interface for the application that can be manipulated.

12. The computer program product of claim 10 , wherein the first entity consumes the input events in the buffer in chronological order.

13. The computer program product of claim 10 , wherein the first entity passes the input events to the second entity from the buffer in chronological order.

14. The computer program product of claim 10 , further comprising forwarding the input events to the second entity when the second entity does not instruct the first entity to process the input events.

15. The computer program product of claim 9 , further comprising detecting when one of the input events should be handled synchronously.

16. The computer program product of claim 9 , further comprising detecting if one of the input events is stale as a result of the second entity being unresponsive.

17. A computer comprising:

one or more processing units executing computer program instructions stored in a computer readable storage device, such that the computer includes:

an operating system comprising a first entity, wherein the first entity receives input events from input devices connected to the computer, the input events being directed to an application running on the computer, the application receiving the input events from the operating system through an input stack;

the application including a second entity separate from the operating system and the first entity;

the first entity in the operating system informing the second entity of the application about the input events;

wherein, after informing the second entity about receipt of the input events, the second entity-provides information to the first entity indicating processing is to be performed by the first entity on the input events; and

the first entity being enabled to perform a user interface manipulation based on one of the input events while the second entity is unresponsive;

the first entity including a buffer in memory accessible by the one or more processing units, the first entity buffering received input events in the buffer until receiving the information from the second entity indicating processing is to be performed by the first entity on the input events, and the first entity processing the input events after receiving the information from the second entity indicating processing is to be performed by the first entity on the input events and placing at least some of the input events in the input stack, and removing the input events from the buffer.

18. The computer of claim 17 , wherein the input events relate to multiple contacts.

19. The computer of claim 18 , wherein the input events relate to multiple targets in a user interface for the application that can be manipulated.

20. The computer of claim 18 , wherein the first entity passes the input events to the second entity from the buffer in chronological order.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2012
From: BRUN, NICOLA
To: MICROSOFT CORPORATION
Reel/Frame 028618/0522 →