Abstract:
User configurations of an installed application are migrated by isolating them from a base application state of the installed application to generate a virtual application package. At runtime, a base virtual application package and a user configurations virtual application package are provisioned from a central repository and executed by the user. The resulting virtualized execution environment merges the application resources contained in the packages such that the user configurations override the base application to make available all of the user configurations. This technique may be used to preserve user configurations during migration of applications, or to maintain user-specific configurations for a particular application across different sessions of a user's virtualized desktop.
Abstract:
User profiles of remote desktops are managed in a crash-consistent manner. When a user logs into a remote desktop, metadata of the user profile is loaded from persistent storage while registry settings and files of the user profile are loaded asynchronously with respect to the login. During the remote desktop session, snapshots of the remote desktop image in persistent storage are generated periodically, and a change log that indicates changes to the user profile is created therefrom. The user profile stored in persistent storage is updated lazily using the change log at opportunistic times after snapshot generation. When the user logs out of the remote desktop, the user profile stored in the persistent storage is updated with any additional changes to the user profile by extracting the changes from the copy-on-write cache associated with the most recent snapshot.
Abstract:
A computer readable storage medium containing a program which, when executed by a processor, performs an operation of emulating static thread local storage of an executable software code at runtime, is disclosed. The operation includes executing the executable software code within a process memory space. During the execution of the executable software code, an occurrence of an event that is associated with a thread create operation is monitored. When the monitored event occurs, a thread data block duplicate is established within the process memory space and associated with a thread created by the thread create operation. The thread data block duplicate is configured to be accessed by executing a thread local storage callback function.
Abstract:
A server receives an update image for transmission to a client and encodes and compresses the update image data using a progressive encoding scheme. In one embodiment, the image data is encoded using progressive JPEG encoding and then into a base64 text string. When insufficient network bandwidth is available to transmit all of the image data for the update image, the server transmits only a first portion of the encoded image data, which is sufficient to fully reproduce the original update image but at a lower quality. When more network bandwidth becomes available, an additional portion of the encoded image data is transmitted to the client. The client is able to append the additional portion to the first portion to refine the image represented at the client. This mechanism may be implemented using unmodified web browsers and servers to remote a computer graphical user interface display.
Abstract:
Systems and methods described herein facilitate determining compression methods to use on an image. A client is in communication with a server that is configured to separate an image into a plurality of regions. The server is also configured to determine a first data compression method for a first set of the regions and a second data compression method for a second set of the regions, wherein the second data compression method is different from the first data compression method. Further, the server is configured to compress the first set and the second set of the regions by using the first data compression method and the second data compression method, respectively. The server is also configured to transmit the first set and the second set of the regions that have been compressed to the client.
Abstract:
A server is in communication with a plurality of clients being executed by a host. The server is configured to receive a message from a first client of the plurality of clients. The message indicates that the first client currently has focus, wherein the message is transmitted by the first client with a first cookie. The server is configured to identify that a second client of the plurality of clients utilizes a second cookie that matches the first cookie, wherein the second client is currently receiving data from the server using a low-latency update mechanism. The server is also configured to downgrade the second client from the low-latency update mechanism to a high-latency update mechanism, wherein the high-latency update mechanism is configured to enable the second client to conduct a poll of the server periodically for updates.
Abstract:
Systems and methods described herein compress video data using image block matching. A server is configured to access a reference frame of an image in a video, separate the reference frame into a plurality of reference blocks of pixels, calculate a hash value for each of the plurality of reference blocks of pixels, receive a current frame of an image in the video, separate the current frame into a plurality of current blocks of pixels, and calculate a hash value for each of the plurality of current blocks of pixels. Further, the server is configured to compare the reference frame hash values with the current frame hash values, identify a hash value in the reference frame that matches a hash value in the current frame, and store the indication that the hash value in the reference frame matches the hash value in the current frame.
Abstract:
A graphical user interface (GUI) is polled to identify updates for transmission to a client device. A generalized poll of the GUI is conducted at a first frequency, wherein the poll compares color values of each pixel in a general region of the GUI with a previously known color value for that pixel to detect changed pixel color values. A local region that is a subset of the general region is determined to have a greater likelihood of being updated, e.g., regions encompassing a location of mouse and/or keyboard activity. A localized poll is conducted at a second frequency of only the local region of the GUI.
Abstract:
A plurality of web requests for images are received from a web client via corresponding web request channels. A response to a first one of the web requests is suppressed until a first generated image is received by the web server. The first web request is associated to the first generated image, which is then transmitted to the web client as a response to the first web request via the corresponding web request channels. A second received generated image is transmitted to the web client via a control channel based on a detection of a triggering event.
Abstract:
Systems and methods described herein facilitate the transmission of data in real time by using TCP connections such that the latency issues incurred from packet loss is prevented. A server is in communication with a client, wherein the server is configured to facilitate forming a plurality of TCP connections with the client. The server is also configured to receive one or more requests from the client via the TCP connections, wherein at least one of the requests corresponds to a request to receive data in real time. The server is configured to separate the real-time data into a succession of data sets and associate the data sets to the TCP connections such that each of the succession of data sets is associated with a separate TCP connection. Each of the succession of data sets is transmitted to the client via the associated separate TCP connections.