From cce4f773d858a2b131a026fa82136743155ad12b Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Sun, 23 Dec 2012 14:07:37 -0800 Subject: [PATCH] fixes, logging for off screen --- libxrdp/xrdp_orders.c | 1 + xrdp/xrdp_painter.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/libxrdp/xrdp_orders.c b/libxrdp/xrdp_orders.c index a76ecaea..bb95aa71 100644 --- a/libxrdp/xrdp_orders.c +++ b/libxrdp/xrdp_orders.c @@ -2449,6 +2449,7 @@ xrdp_orders_send_create_os_surface(struct xrdp_orders *self, int id, order_flags |= 1 << 2; /* type RDP_ORDER_ALTSEC_CREATE_OFFSCR_BITMAP */ out_uint8(self->out_s, order_flags); cache_id = id & 0x7fff; + LLOGLN(10, ("xrdp_orders_send_create_os_surface: cache_id %d", cache_id)); flags = cache_id; if (num_del_list > 0) diff --git a/xrdp/xrdp_painter.c b/xrdp/xrdp_painter.c index 0b867089..8ba33825 100644 --- a/xrdp/xrdp_painter.c +++ b/xrdp/xrdp_painter.c @@ -708,6 +708,8 @@ xrdp_painter_copy(struct xrdp_painter *self, int dsty; int w; int h; + int index; + struct list *del_list; if (self == 0 || src == 0 || dst == 0) { @@ -781,6 +783,22 @@ xrdp_painter_copy(struct xrdp_painter *self, cache_id = 255; // todo cache_idx = src->item_index; // todo + if (src->tab_stop == 0) + { + g_writeln("xrdp_painter_copy: warning src not created"); + del_list = self->wm->cache->xrdp_os_del_list; + index = list_index_of(del_list, cache_idx); + list_remove_item(del_list, index); + libxrdp_orders_send_create_os_surface(self->session, + cache_idx, + src->width, + src->height, + del_list); + src->tab_stop = 1; + list_clear(del_list); + } + + k = 0; while (xrdp_region_get_rect(region, k, &rect1) == 0)