summaryrefslogtreecommitdiffstats
path: root/xorg
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2013-10-01 14:52:53 -0700
committerJay Sorg <jay.sorg@gmail.com>2013-10-01 14:52:53 -0700
commitcd93db2c98425645c9c79fece04617c4d82184c3 (patch)
tree428e6352fdfda9cbbf6528d87c2fea285893dc52 /xorg
parent538763e1442d58c999101f2b934fb3df3aa341c5 (diff)
downloadxrdp-proprietary-cd93db2c98425645c9c79fece04617c4d82184c3.tar.gz
xrdp-proprietary-cd93db2c98425645c9c79fece04617c4d82184c3.zip
X11rdp: fix for composite on screen delay and fixes for shared memory order
Diffstat (limited to 'xorg')
-rw-r--r--xorg/X11R7.6/rdp/rdpComposite.c17
-rw-r--r--xorg/X11R7.6/rdp/rdpglyph.c2
-rw-r--r--xorg/X11R7.6/rdp/rdpmain.c2
-rw-r--r--xorg/X11R7.6/rdp/rdpup.c12
4 files changed, 25 insertions, 8 deletions
diff --git a/xorg/X11R7.6/rdp/rdpComposite.c b/xorg/X11R7.6/rdp/rdpComposite.c
index 57661520..f763783e 100644
--- a/xorg/X11R7.6/rdp/rdpComposite.c
+++ b/xorg/X11R7.6/rdp/rdpComposite.c
@@ -39,6 +39,8 @@ extern ScreenPtr g_pScreen; /* from rdpmain.c */
extern Bool g_wrapPixmap; /* from rdpmain.c */
extern int g_can_do_pix_to_pix; /* from rdpmain.c */
extern int g_do_dirty_os; /* in rdpmain.c */
+extern int g_do_dirty_ons; /* in rdpmain.c */
+extern rdpPixmapRec g_screenPriv; /* in rdpmain.c */
extern int g_do_glyph_cache; /* in rdpmain.c */
extern int g_doing_font; /* in rdpmain.c */
extern int g_do_composite; /* in rdpmain.c */
@@ -766,9 +768,18 @@ rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
if (pDstWnd->viewable)
{
post_process = 1;
- rdpup_get_screen_image_rect(&id);
- got_id = 1;
- LLOGLN(10, ("rdpComposite: screen"));
+ if (g_do_dirty_ons)
+ {
+ LLOGLN(10, ("rdpComposite: getting dirty"));
+ g_screenPriv.is_dirty = 1;
+ pDirtyPriv = &g_screenPriv;
+ dirty_type = g_doing_font ? RDI_IMGLL : RDI_IMGLY;
+ }
+ else
+ {
+ rdpup_get_screen_image_rect(&id);
+ got_id = 1;
+ }
}
}
}
diff --git a/xorg/X11R7.6/rdp/rdpglyph.c b/xorg/X11R7.6/rdp/rdpglyph.c
index 954fbbe4..cb895ae5 100644
--- a/xorg/X11R7.6/rdp/rdpglyph.c
+++ b/xorg/X11R7.6/rdp/rdpglyph.c
@@ -826,6 +826,8 @@ rdpGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
LLOGLN(10, ("rdpGlyphs: op %d xSrc %d ySrc %d maskFormat %p",
op, xSrc, ySrc, maskFormat));
+ LLOGLN(10, ("rdpGlyphs: g_do_glyph_cache %d", g_do_glyph_cache));
+
if (g_do_glyph_cache && rdpGlyphCheck(nlists, lists, glyphs))
{
g_doing_font = 2;
diff --git a/xorg/X11R7.6/rdp/rdpmain.c b/xorg/X11R7.6/rdp/rdpmain.c
index 20fe437d..1b924db7 100644
--- a/xorg/X11R7.6/rdp/rdpmain.c
+++ b/xorg/X11R7.6/rdp/rdpmain.c
@@ -47,7 +47,7 @@ DeviceIntPtr g_keyboard = 0;
int g_can_do_pix_to_pix = 0;
int g_do_dirty_os = 1; /* delay remoting off screen bitmaps */
-int g_do_dirty_ons = 0; /* delay remoting screen */
+int g_do_dirty_ons = 1; /* delay remoting screen */
int g_do_glyph_cache = 0; /* rdpup.c may set this */
int g_do_alpha_glyphs = 1;
int g_do_composite = 0; /* rdpup.c may set this */
diff --git a/xorg/X11R7.6/rdp/rdpup.c b/xorg/X11R7.6/rdp/rdpup.c
index e9b050a8..4e9b9659 100644
--- a/xorg/X11R7.6/rdp/rdpup.c
+++ b/xorg/X11R7.6/rdp/rdpup.c
@@ -1113,8 +1113,8 @@ rdpup_process_msg(struct stream *s)
in_uint32_le(s, y);
in_uint32_le(s, cx);
in_uint32_le(s, cy);
- LLOGLN(10, (" %d %d %d %d", x, y, cx ,cy));
- LLOGLN(10, (" rect_id %d rect_id_ack %d", g_rect_id, g_rect_id_ack));
+ LLOGLN(10, ("rdpup_process_msg: %d %d %d %d", x, y, cx ,cy));
+ LLOGLN(10, ("rdpup_process_msg: rect_id %d rect_id_ack %d", g_rect_id, g_rect_id_ack));
box.x1 = x;
box.y1 = y;
@@ -1122,7 +1122,7 @@ rdpup_process_msg(struct stream *s)
box.y2 = box.y1 + cy;
RegionInit(&reg, &box, 0);
- LLOGLN(10, ("< %d %d %d %d", box.x1, box.y1, box.x2, box.y2));
+ LLOGLN(10, ("rdpup_process_msg: %d %d %d %d", box.x1, box.y1, box.x2, box.y2));
RegionSubtract(g_shm_reg, g_shm_reg, &reg);
RegionUninit(&reg);
@@ -2088,14 +2088,17 @@ rdpup_send_area(struct image_data *id, int x, int y, int w, int h)
box.y1 = y;
box.x2 = box.x1 + w;
box.y2 = box.y1 + h;
+ LLOGLN(10, ("rdpup_send_area: 1 x %d y %d w %d h %d", x, y, w, h));
safety = 0;
while (RegionContainsRect(g_shm_reg, &box))
{
- rdpup_end_update();
+ /* instread of rdpup_end_update, call rdpup_send_pending */
+ rdpup_send_pending();
rdpup_begin_update();
safety++;
if (safety > 100)
{
+ LLOGLN(0, ("rdpup_send_area: shmem timeout"));
break;
}
if (sck_can_recv(g_sck, 100))
@@ -2125,6 +2128,7 @@ rdpup_send_area(struct image_data *id, int x, int y, int w, int h)
out_uint16_le(g_out_s, 60);
out_uint16_le(g_out_s, size);
g_count++;
+ LLOGLN(10, ("rdpup_send_area: 2 x %d y %d w %d h %d", x, y, w, h));
out_uint16_le(g_out_s, x);
out_uint16_le(g_out_s, y);
out_uint16_le(g_out_s, w);