8163b6d1ce
This commit adds a cache for RAIL application icons. It is (surpisingly) used to cache icons for remote applications. This mechanism is described in MS-RDPERP 3.1.1.2 Icon Cache Support and related items. Note that some (actually, most) of the icons are not cached. These are marked with CacheId == 0xFF. In order to keep the code clean we do not introduce a special case and instead use a 'scratch' icon and simply pretend to return an xfRailIcon from cache. We're going to set icons via _NET_WM_ICON property which explains why we use "long" values to store pixel data. The icon conversion is not implemented in this commit, it's only stubs. However, we do implement processing of window information orders that contain new icons or cached references to previously sent icons. Note that it is important to not fail (i.e., to not return FALSE) if we cannot find a window for the icon by its ID. The server occasionally likes to be slow or something and send icon updates for nonexistent windows. This behavior is mandated by the spec, too: MS-RDPERP 3.2.5.1.6 Processing Window Information Orders Upon receipt of a Window Information Order for an icon or cached icon, as specified in sections 2.2.1.3.1.2.2 and 2.2.1.3.1.2.3, the client SHOULD locate the local RAIL window that corresponds to the WindowId reported in the Hdr field and apply the icon updates to the RAIL window. If no such window can be found, the client SHOULD ignore the order. Indeed, we silently ignore such orders now. |
||
---|---|---|
.. | ||
Android | ||
common | ||
DirectFB | ||
iOS | ||
Mac | ||
Sample | ||
Wayland | ||
Windows | ||
X11 | ||
.gitignore | ||
CMakeLists.txt | ||
freerdp-client.pc.in | ||
FreeRDP-ClientConfig.cmake.in |