summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libxrdp/libxrdp.c12
-rw-r--r--xorg/X11R7.6/rdp/rdpdraw.c3
2 files changed, 9 insertions, 6 deletions
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));