IP Library Granted Patent US 10,026,144
Granted Patent B2
US 10,026,144 · App. 15/283,649 · Granted Jul 17, 2018

Rendering windows having transparent properties from a remote desktop environment

Inventors: Robert Wilhelm Schmieder (Snoqualmie, WA); Oreste Dorin Ungureanu (Duvall, WA); Nadim Abdo (Kirkland, WA)
Assignee: Microsoft Technology Licensing, LLC
G06T1/20G06F3/0481G06F9/4445G06F9/452G06T11/001G06F2203/04804
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 10,026,144
App. No.
15/283,649
Granted
Jul 17, 2018
Kind
B2
Abstract

Embodiments of the present disclosure relate to a remote desktop system which allows an application that executes on a remote computing device to be presented to a remote terminal as if the application is executing on the remote terminal. This system determines which of the remote computing device's application windows are top-level windows, and creates a rendering target for each top-level window. The rendering target is a graphics surface that is marshaled to the remote terminal. A PDU (Protocol Data Channel) is produced over this first graphics surface that includes a mapping of the location of the top-level window. A second graphics surface containing transparency information is created for a top-level window that contains a transparency characteristic. This second graphics surface is encoded and marshaled to the remote terminal separately from the first graphics surface. The client computing device receives and merges the two graphics surfaces, and renders a window with the expected transparency.

Claims (42)

1. A system comprising:

at least one processor; and

a memory coupled to the at least one processor, the memory for storing instructions which, when executed by the one or more processors, performs a method for rendering a window in a remote desktop session between a server computing device and a client computing device, the method comprising:

determining a window rendered on the server computing device is a top-level window;

determining a first set of sub-components of the top-level window comprises a transparency characteristic;

encoding the first set of sub-components of the top-level window comprising the transparency characteristic using a first encoding scheme;

encoding a second set of sub-components of the top-level window not comprising the transparency characteristic using a second encoding scheme; and

transmitting the first set of sub-components and the second set of sub-components to the client computing device.

2. The system of claim 1 , the method further comprising determining the top-level window comprises the first set of sub-components, wherein the first set of sub-components are organized according to a hierarchal structure comprising a root node and one or more child nodes.

3. The system of claim 1 , the method further comprising rendering the top-level window on a surface, wherein the surface represents pixels corresponding to the top-level window.

4. The system of claim 3 , wherein the surface is capable of rendering one or more top-level windows such that portions of the surface rendering one or more top level windows are identified by a location on the surface.

5. The system of claim 3 , wherein the surface comprises padding associated with a number of pixels, wherein the padding facilitates data compression for the top-level window.

6. The system of claim 5 , wherein the padding enables the rendered top-level window to be resized without destroying the surface.

7. The system of claim 3 , wherein the surface comprises a pixel limit, the pixel limit representing a top-level window size that, if exceeded, causes the surface to be destroyed.

8. The system of claim 3 , the method further comprising:

determining whether at least one of the first set of sub-components and the second set of sub-components has been modified; and

in response to determining at least one of the first set of sub-components and the second set of sub-components has been modified, re-rendering the modified sub-components on the surface.

9. The system of claim 8 , wherein determining whether at least one of the first set of sub-components and the second set of sub-components has been modified comprises using a differencing-based compression algorithm to compare a first version of the top-level window to a second version of the top-level window.

10. The system of claim 3 , wherein the encoding the first set of sub-components comprises encoding one or more portions of the surface rendering the top-level window.

11. The system of claim 1 , wherein the first encoding scheme uses an alpha codec, wherein the alpha codec encodes the transparency characteristic using an alpha value.

12. The system of claim 1 , wherein the second encoding scheme uses a codec not supporting transparency, and wherein the first set of sub-components is encoded separately from the second set of sub-components.

13. The system of claim 1 , wherein transmitting the first set of sub-components and the second set of sub-components comprises determining whether the client device is capable of decoding the first set of sub-components and the second set of sub-components.

14. The system of claim 1 , wherein the method further comprises:

detecting a position change for the top-level window;

determining the position change does not warrant retransmitting the top-level window to the client computing device; and

transmitting to the client computing device a command indicating a new position of the top-level window.

15. A computer-implemented method for rendering a window in a remote desktop session between a server computing device and a client computing device, the method comprising:

determining a window rendered on the server computing device is a top-level window;

determining a first set of sub-components of the top-level window comprises a transparency characteristic;

encoding the first set of sub-components of the top-level window comprising the transparency characteristic using a first encoding scheme;

encoding a second set of sub-components of the top-level window not comprising the transparency characteristic using a second encoding scheme; and

transmitting the first set of sub-components and the second set of sub-components to the client computing device.

16. The method of claim 15 , further comprising rendering the top-level window on a surface, wherein the surface represents pixels corresponding to the top-level window, and wherein the surface comprises padding associated with a number of pixels.

17. The method of claim 15 , further comprising determining whether at least one of the first set of sub-components and the second set of sub-components has been modified, wherein the determining comprises using a differencing-based compression algorithm to compare a first version of the top-level window to a second version of the top-level window.

18. The method of claim 15 , wherein the first encoding scheme uses an alpha codec and the second encoding scheme uses a RGB codec not supporting transparency, wherein the alpha codec encodes the transparency characteristic using one or more alpha values.

19. The method of claim 18 , wherein the alpha codec and the RGB codec are transmitted to the client computing device.

20. A computer storage device encoding computer executable instructions that, when executed by at least one processor, cause the at least one processor to perform a method for rendering a window in a remote desktop session between a server computing device and a client computing device, the method comprising:

determining a window rendered on the server computing device is a top-level window;

determining a first set of sub-components of the top-level window comprises a transparency characteristic;

encoding the first set of sub-components of the top-level window comprising the transparency characteristic using a first encoding scheme;

encoding a second set of sub-components of the top-level window not comprising the transparency characteristic using a second encoding scheme; and

transmitting the first set of sub-components and the second set of sub-components to the client computing device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2016
From: SCHMIEDER, ROBERT WILHELM; UNGUREANU, ORESTE DORIN; ABDO, NADIM
To: MICROSOFT CORPORATION
Reel/Frame 039921/0819 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2016
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039921/0835 →
Continuity (3)
Continuation 14168239 · Jan 30, 2014
Provisional Application 61897129 · Oct 29, 2013
Related Publication 20170024850A1 · Jan 26, 2017