diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c index 91ff1e35..19e8a2c6 100644 --- a/libxrdp/libxrdp.c +++ b/libxrdp/libxrdp.c @@ -428,17 +428,20 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx, int data_bytes; DEBUG(("libxrdp_send_pointer sending cursor")); + if (bpp == 0) + { + bpp = 24; + } /* error check */ if ((session->client_info->pointer_flags & 1) == 0) { - if (bpp != 0) + if (bpp != 24) { g_writeln("libxrdp_send_pointer: error"); return 1; } } - if ((bpp != 0) && (bpp == 15) && (bpp != 16) && - (bpp != 24) && (bpp != 32)) + if ((bpp == 15) && (bpp != 16) && (bpp != 24) && (bpp != 32)) { g_writeln("libxrdp_send_pointer: error"); return 1; @@ -446,7 +449,7 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx, make_stream(s); init_stream(s, 8192); xrdp_rdp_init_data((struct xrdp_rdp *)session->rdp, s); - if (bpp == 0) + if ((session->client_info->pointer_flags & 1) == 0) { out_uint16_le(s, RDP_POINTER_COLOR); out_uint16_le(s, 0); /* pad */ @@ -481,7 +484,6 @@ libxrdp_send_pointer(struct xrdp_session *session, int cache_idx, } } break; - case 0: case 24: p = data; for (i = 0; i < 32; i++) diff --git a/xorg/X11R7.6/rdp/rdpdraw.c b/xorg/X11R7.6/rdp/rdpdraw.c index 068f8267..e711733b 100644 --- a/xorg/X11R7.6/rdp/rdpdraw.c +++ b/xorg/X11R7.6/rdp/rdpdraw.c @@ -739,7 +739,8 @@ xrdp_is_os(PixmapPtr pix, rdpPixmapPtr priv) { width = pix->drawable.width; height = pix->drawable.height; - if ((pix->drawable.depth >= g_rdpScreen.depth) && + if ((pix->usage_hint == 0) && + (pix->drawable.depth >= g_rdpScreen.depth) && (width > 1) && (height > 1) && (priv->kind_width > 0)) { LLOGLN(10, ("%d %d", priv->kind_width, pix->drawable.width));