diff options
Diffstat (limited to 'xorg/X11R7.6')
-rwxr-xr-x | xorg/X11R7.6/buildx.sh | 113 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdp.h | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpCopyArea.c | 24 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpCopyPlane.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpFillPolygon.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpImageGlyphBlt.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpImageText16.c | 6 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpImageText8.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyArc.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyFillArc.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyFillRect.c | 39 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyGlyphBlt.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyRectangle.c | 6 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolySegment.c | 2 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyText16.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolyText8.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPolylines.c | 2 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPushPixels.c | 4 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpPutImage.c | 8 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpdraw.c | 99 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpmain.c | 6 | ||||
-rw-r--r-- | xorg/X11R7.6/rdp/rdpup.c | 11 |
22 files changed, 178 insertions, 182 deletions
diff --git a/xorg/X11R7.6/buildx.sh b/xorg/X11R7.6/buildx.sh index 18bbba46..74145e36 100755 --- a/xorg/X11R7.6/buildx.sh +++ b/xorg/X11R7.6/buildx.sh @@ -33,113 +33,14 @@ download_file() return 0 fi - echo "downloading file $file" + echo "downloading file $download_url/$file" cd downloads - if [ "$file" = "libpthread-stubs-0.3.tar.bz2" ]; then - wget -cq http://xcb.freedesktop.org/dist/$file - status=$? - cd .. - return $status - elif [ "$file" = "libxcb-1.7.tar.bz2" ]; then - wget -cq http://xcb.freedesktop.org/dist/$file - status=$? - cd .. - return $status - elif [ "$file" = "xcb-proto-1.6.tar.bz2" ]; then - wget -cq http://xcb.freedesktop.org/dist/$file - status=$? - cd .. - return $status -# note pixman updated - elif [ "$file" = "pixman-0.30.0.tar.bz2" ]; then - wget -cq http://xorg.freedesktop.org/archive/individual/lib/$file - status=$? - cd .. - return $status - elif [ "$file" = "libdrm-2.4.26.tar.bz2" ]; then - wget -cq http://dri.freedesktop.org/libdrm/$file - status=$? - cd .. - return $status - elif [ "$file" = "MesaLib-7.10.3.tar.bz2" ]; then - wget -cq ftp://ftp.freedesktop.org/pub/mesa/7.10.3/$file - status=$? - cd .. - return $status - elif [ "$file" = "expat-2.0.1.tar.gz" ]; then - wget -cq http://server1.xrdp.org/xrdp/expat-2.0.1.tar.gz - - status=$? - cd .. - return $status - elif [ "$file" = "freetype-2.4.6.tar.bz2" ]; then - wget -cq http://download.savannah.gnu.org/releases/freetype/freetype-2.4.6.tar.bz2 - status=$? - cd .. - return $status - elif [ "$file" = "xkeyboard-config-2.0.tar.bz2" ]; then - wget -cq http://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.0.tar.bz2 - status=$? - cd .. - return $status - elif [ "$file" = "makedepend-1.0.3.tar.bz2" ]; then - wget -cq http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.3.tar.bz2 - status=$? - cd .. - return $status - elif [ "$file" = "libxml2-sources-2.7.8.tar.gz" ]; then - wget -cq ftp://ftp.xmlsoft.org/libxml2/libxml2-sources-2.7.8.tar.gz - status=$? - cd .. - return $status - elif [ "$file" = "Python-2.5.tar.bz2" ]; then - wget -cq http://www.python.org/ftp/python/2.5/Python-2.5.tar.bz2 - status=$? - cd .. - return $status - elif [ "$file" = "Python-2.7.tar.bz2" ]; then - wget -cq http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2 - status=$? - cd .. - return $status - elif [ "$file" = "expat-2.0.1.tar.gz" ]; then - wget -cq http://server1.xrdp.org/xrdp/expat-2.0.1.tar.gz - status=$? - cd .. - return $status - elif [ "$file" = "cairo-1.8.8.tar.gz" ]; then - wget -cq http://server1.xrdp.org/xrdp/cairo-1.8.8.tar.gz - status=$? - cd .. - return $status - elif [ "$file" = "libpng-1.2.46.tar.gz" ]; then - wget -cq http://server1.xrdp.org/xrdp/libpng-1.2.46.tar.gz - status=$? - cd .. - return $status - elif [ "$file" = "intltool-0.41.1.tar.gz" ]; then - wget -cq http://launchpad.net/intltool/trunk/0.41.1/+download/intltool-0.41.1.tar.gz - status=$? - cd .. - return $status - elif [ "$file" = "libxslt-1.1.26.tar.gz" ]; then - wget -cq ftp://xmlsoft.org/libxslt/libxslt-1.1.26.tar.gz - status=$? - cd .. - return $status - elif [ "$file" = "fontconfig-2.8.0.tar.gz" ]; then - wget -cq http://server1.xrdp.org/xrdp/fontconfig-2.8.0.tar.gz - status=$? - cd .. - return $status - else - wget -cq $download_url/$file - status=$? - cd .. - return $status - fi + wget -cq $download_url/$file + status=$? + cd .. + return $status } remove_modules() @@ -285,7 +186,9 @@ make_it() data_file=x11_file_list.txt # this is the default download location for most modules -download_url=http://www.x.org/releases/X11R7.6/src/everything +# changed now to server1.xrdp.org +# was www.x.org/releases/X11R7.6/src/everything +download_url=http://server1.xrdp.org/xrdp/X11R7.6 num_modules=`cat $data_file | wc -l` count=0 diff --git a/xorg/X11R7.6/rdp/rdp.h b/xorg/X11R7.6/rdp/rdp.h index 22dcdbf7..6fd7c38a 100644 --- a/xorg/X11R7.6/rdp/rdp.h +++ b/xorg/X11R7.6/rdp/rdp.h @@ -258,7 +258,7 @@ struct _rdpPixmapRec int rdpindex; int con_number; int is_dirty; - int pad0; + int is_scratch; int kind_width; struct rdp_draw_item* draw_item_head; struct rdp_draw_item* draw_item_tail; @@ -341,7 +341,7 @@ int draw_item_pack(PixmapPtr pix, rdpPixmapRec* priv); int draw_item_add_img_region(rdpPixmapRec* priv, RegionPtr reg, int opcode, - int type); + int type, int code); int draw_item_add_fill_region(rdpPixmapRec* priv, RegionPtr reg, int color, int opcode); diff --git a/xorg/X11R7.6/rdp/rdpCopyArea.c b/xorg/X11R7.6/rdp/rdpCopyArea.c index cdece2c9..a97aaf56 100644 --- a/xorg/X11R7.6/rdp/rdpCopyArea.c +++ b/xorg/X11R7.6/rdp/rdpCopyArea.c @@ -375,7 +375,7 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, WindowPtr pDstWnd; WindowPtr pSrcWnd; - LLOGLN(10, ("rdpCopyArea:")); + LLOGLN(10, ("rdpCopyArea: x %d y %d w %d h %d", dstx, dsty, w, h)); if (pSrc->type == DRAWABLE_WINDOW) { @@ -416,6 +416,10 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, srcx, srcy, w, h, dstx, dsty); } } + else + { + LLOGLN(10, ("rdpCopyArea: 1")); + } } } } @@ -456,8 +460,16 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, dstx, dsty); } } + else + { + LLOGLN(10, ("rdpCopyArea: 4")); + } } } + else + { + LLOGLN(10, ("rdpCopyArea: 2")); + } } /* do original call */ @@ -493,6 +505,10 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, got_id = 1; } } + else + { + LLOGLN(10, ("rdpCopyArea: 3")); + } } else { @@ -506,7 +522,7 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpCopyArea: gettig dirty")); + LLOGLN(10, ("rdpCopyArea: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; @@ -537,7 +553,7 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, box.x2 = box.x1 + w; box.y2 = box.y1 + h; RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 1); RegionUninit(®1); } else if (got_id) @@ -561,7 +577,7 @@ rdpCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, box.y2 = box.y1 + h; RegionInit(&box_reg, &box, 0); RegionIntersect(&clip_reg, &clip_reg, &box_reg); - draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type, 1); RegionUninit(&box_reg); } else if (got_id) diff --git a/xorg/X11R7.6/rdp/rdpCopyPlane.c b/xorg/X11R7.6/rdp/rdpCopyPlane.c index 47e66e59..aac03287 100644 --- a/xorg/X11R7.6/rdp/rdpCopyPlane.c +++ b/xorg/X11R7.6/rdp/rdpCopyPlane.c @@ -168,7 +168,7 @@ rdpCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, box.x2 = box.x1 + w; box.y2 = box.y1 + h; RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 5); RegionUninit(®1); } else if (got_id) @@ -194,7 +194,7 @@ rdpCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, RegionInit(®2, NullBox, 0); RegionCopy(®2, &clip_reg); RegionIntersect(®1, ®1, ®2); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 5); RegionUninit(®1); RegionUninit(®2); } diff --git a/xorg/X11R7.6/rdp/rdpFillPolygon.c b/xorg/X11R7.6/rdp/rdpFillPolygon.c index 53227159..4c54f447 100644 --- a/xorg/X11R7.6/rdp/rdpFillPolygon.c +++ b/xorg/X11R7.6/rdp/rdpFillPolygon.c @@ -203,7 +203,7 @@ rdpFillPolygon(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 7); RegionUninit(®1); } else if (got_id) @@ -223,7 +223,7 @@ rdpFillPolygon(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type, 7); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpImageGlyphBlt.c b/xorg/X11R7.6/rdp/rdpImageGlyphBlt.c index e0ec5502..c5fcfaa7 100644 --- a/xorg/X11R7.6/rdp/rdpImageGlyphBlt.c +++ b/xorg/X11R7.6/rdp/rdpImageGlyphBlt.c @@ -169,7 +169,7 @@ rdpImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 13); RegionUninit(®1); } else if (got_id) @@ -189,7 +189,7 @@ rdpImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type, 13); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpImageText16.c b/xorg/X11R7.6/rdp/rdpImageText16.c index 71e9b351..e6048095 100644 --- a/xorg/X11R7.6/rdp/rdpImageText16.c +++ b/xorg/X11R7.6/rdp/rdpImageText16.c @@ -132,7 +132,7 @@ rdpImageText16(DrawablePtr pDrawable, GCPtr pGC, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpImageText16: gettig dirty")); + LLOGLN(10, ("rdpImageText16: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; @@ -167,7 +167,7 @@ rdpImageText16(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 12); RegionUninit(®1); } else if (got_id) @@ -187,7 +187,7 @@ rdpImageText16(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type, 12); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpImageText8.c b/xorg/X11R7.6/rdp/rdpImageText8.c index 6acdc205..641637e0 100644 --- a/xorg/X11R7.6/rdp/rdpImageText8.c +++ b/xorg/X11R7.6/rdp/rdpImageText8.c @@ -167,7 +167,7 @@ rdpImageText8(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 9); RegionUninit(®1); } else if (got_id) @@ -187,7 +187,7 @@ rdpImageText8(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type, 9); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpPolyArc.c b/xorg/X11R7.6/rdp/rdpPolyArc.c index 42a8c19e..6d6651f1 100644 --- a/xorg/X11R7.6/rdp/rdpPolyArc.c +++ b/xorg/X11R7.6/rdp/rdpPolyArc.c @@ -185,7 +185,7 @@ rdpPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs) { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type, 6); } else if (got_id) { @@ -217,7 +217,7 @@ rdpPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs) { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type, 6); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpPolyFillArc.c b/xorg/X11R7.6/rdp/rdpPolyFillArc.c index aa1171da..6582f69e 100644 --- a/xorg/X11R7.6/rdp/rdpPolyFillArc.c +++ b/xorg/X11R7.6/rdp/rdpPolyFillArc.c @@ -185,7 +185,7 @@ rdpPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs) { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type, 8); } else if (got_id) { @@ -217,7 +217,7 @@ rdpPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs) { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, tmpRegion, GXcopy, dirty_type, 8); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpPolyFillRect.c b/xorg/X11R7.6/rdp/rdpPolyFillRect.c index 254cdff8..e51fca4c 100644 --- a/xorg/X11R7.6/rdp/rdpPolyFillRect.c +++ b/xorg/X11R7.6/rdp/rdpPolyFillRect.c @@ -98,8 +98,25 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, { pDstPixmap = (PixmapPtr)pDrawable; pDstPriv = GETPIXPRIV(pDstPixmap); + if (pDstPixmap->devPrivate.ptr == g_rdpScreen.pfbMemory) + { + /* treat like root window */ + post_process = 1; - if (xrdp_is_os(pDstPixmap, pDstPriv)) + if (g_do_dirty_ons) + { + LLOGLN(10, ("rdpPolyFillRect: gettig dirty")); + g_screenPriv.is_dirty = 1; + pDirtyPriv = &g_screenPriv; + dirty_type = RDI_IMGLL; + } + else + { + rdpup_get_screen_image_rect(&id); + got_id = 1; + } + } + else if (xrdp_is_os(pDstPixmap, pDstPriv)) { post_process = 1; @@ -131,7 +148,7 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpPolyFillRect: gettig dirty")); + LLOGLN(10, ("rdpPolyFillRect: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; @@ -148,12 +165,14 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, if (!post_process) { RegionDestroy(fill_reg); + LLOGLN(10, ("rdpPolyFillRect: out, post_process not set")); return; } RegionTranslate(fill_reg, pDrawable->x, pDrawable->y); RegionInit(&clip_reg, NullBox, 0); cd = rdp_get_clip(&clip_reg, pDrawable, pGC); + LLOGLN(10, ("rdpPolyFillRect: cd %d", cd)); if (cd == 1) /* no clip */ { @@ -166,14 +185,14 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, pGC->alu == GXnoop || pGC->alu == GXand || pGC->alu == GXcopy /*|| - pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ + pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ { draw_item_add_fill_region(pDirtyPriv, fill_reg, pGC->fgPixel, pGC->alu); } else { - draw_item_add_img_region(pDirtyPriv, fill_reg, GXcopy, RDI_IMGLL); + draw_item_add_img_region(pDirtyPriv, fill_reg, GXcopy, RDI_IMGLL, 2); } } else if (got_id) @@ -187,7 +206,7 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, pGC->alu == GXnoop || pGC->alu == GXand || pGC->alu == GXcopy /*|| - pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ + pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ { rdpup_set_fgcolor(pGC->fgPixel); rdpup_set_opcode(pGC->alu); @@ -229,20 +248,24 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, pGC->alu == GXnoop || pGC->alu == GXand || pGC->alu == GXcopy /*|| - pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ + pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ { + LLOGLN(10, ("rdpPolyFillRect: 3")); draw_item_add_fill_region(pDirtyPriv, &clip_reg, pGC->fgPixel, pGC->alu); } else { - draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, RDI_IMGLL); + LLOGLN(10, ("rdpPolyFillRect: 4")); + draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, RDI_IMGLL, 2); } } else if (got_id) { rdpup_begin_update(); + LLOGLN(10, ("2 %x", pGC->fgPixel)); + if (pGC->fillStyle == 0 && /* solid fill */ (pGC->alu == GXclear || pGC->alu == GXset || @@ -250,7 +273,7 @@ rdpPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, pGC->alu == GXnoop || pGC->alu == GXand || pGC->alu == GXcopy /*|| - pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ + pGC->alu == GXxor*/)) /* todo, why dosen't xor work? */ { rdpup_set_fgcolor(pGC->fgPixel); rdpup_set_opcode(pGC->alu); diff --git a/xorg/X11R7.6/rdp/rdpPolyGlyphBlt.c b/xorg/X11R7.6/rdp/rdpPolyGlyphBlt.c index f166b731..298b4b98 100644 --- a/xorg/X11R7.6/rdp/rdpPolyGlyphBlt.c +++ b/xorg/X11R7.6/rdp/rdpPolyGlyphBlt.c @@ -169,7 +169,7 @@ rdpPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 14); RegionUninit(®1); } else if (got_id) @@ -189,7 +189,7 @@ rdpPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type, 14); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpPolyRectangle.c b/xorg/X11R7.6/rdp/rdpPolyRectangle.c index 7fdb4e8b..85bef306 100644 --- a/xorg/X11R7.6/rdp/rdpPolyRectangle.c +++ b/xorg/X11R7.6/rdp/rdpPolyRectangle.c @@ -144,7 +144,7 @@ rdpPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nrects, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpPolyRectangle: gettig dirty")); + LLOGLN(10, ("rdpPolyRectangle: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; @@ -221,7 +221,7 @@ rdpPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nrects, } else { - draw_item_add_img_region(pDirtyPriv, fill_reg, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, fill_reg, GXcopy, dirty_type, 4); } RegionDestroy(fill_reg); @@ -275,7 +275,7 @@ rdpPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nrects, } else { - draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type, 4); } } else if (got_id) diff --git a/xorg/X11R7.6/rdp/rdpPolySegment.c b/xorg/X11R7.6/rdp/rdpPolySegment.c index fab6445e..623ec748 100644 --- a/xorg/X11R7.6/rdp/rdpPolySegment.c +++ b/xorg/X11R7.6/rdp/rdpPolySegment.c @@ -141,7 +141,7 @@ rdpPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment *pSegs) if (g_do_dirty_ons) { - LLOGLN(0, ("rdpPolySegment: gettig dirty")); + LLOGLN(10, ("rdpPolySegment: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; diff --git a/xorg/X11R7.6/rdp/rdpPolyText16.c b/xorg/X11R7.6/rdp/rdpPolyText16.c index 034b11e1..9a253464 100644 --- a/xorg/X11R7.6/rdp/rdpPolyText16.c +++ b/xorg/X11R7.6/rdp/rdpPolyText16.c @@ -170,7 +170,7 @@ rdpPolyText16(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 11); RegionUninit(®1); } else if (got_id) @@ -190,7 +190,7 @@ rdpPolyText16(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type, 11); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpPolyText8.c b/xorg/X11R7.6/rdp/rdpPolyText8.c index c06feac3..59f04d78 100644 --- a/xorg/X11R7.6/rdp/rdpPolyText8.c +++ b/xorg/X11R7.6/rdp/rdpPolyText8.c @@ -170,7 +170,7 @@ rdpPolyText8(DrawablePtr pDrawable, GCPtr pGC, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 10); RegionUninit(®1); } else if (got_id) @@ -190,7 +190,7 @@ rdpPolyText8(DrawablePtr pDrawable, GCPtr pGC, { if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®, GXcopy, dirty_type, 10); } else if (got_id) { diff --git a/xorg/X11R7.6/rdp/rdpPolylines.c b/xorg/X11R7.6/rdp/rdpPolylines.c index 92bb0678..759d1ff9 100644 --- a/xorg/X11R7.6/rdp/rdpPolylines.c +++ b/xorg/X11R7.6/rdp/rdpPolylines.c @@ -192,7 +192,7 @@ rdpPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpPolylines: gettig dirty")); + LLOGLN(10, ("rdpPolylines: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; diff --git a/xorg/X11R7.6/rdp/rdpPushPixels.c b/xorg/X11R7.6/rdp/rdpPushPixels.c index f7b77f23..6a353977 100644 --- a/xorg/X11R7.6/rdp/rdpPushPixels.c +++ b/xorg/X11R7.6/rdp/rdpPushPixels.c @@ -160,7 +160,7 @@ rdpPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, box.x2 = box.x1 + w; box.y2 = box.y1 + h; RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 15); RegionUninit(®1); } else if (got_id) @@ -185,7 +185,7 @@ rdpPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDst, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, &clip_reg, GXcopy, dirty_type, 15); RegionUninit(®1); } else if (got_id) diff --git a/xorg/X11R7.6/rdp/rdpPutImage.c b/xorg/X11R7.6/rdp/rdpPutImage.c index 614d0a31..737e4b31 100644 --- a/xorg/X11R7.6/rdp/rdpPutImage.c +++ b/xorg/X11R7.6/rdp/rdpPutImage.c @@ -83,6 +83,8 @@ rdpPutImage(DrawablePtr pDst, GCPtr pGC, int depth, int x, int y, LLOGLN(10, ("rdpPutImage:")); LLOGLN(10, ("rdpPutImage: drawable id 0x%x", (int)(pDst->id))); + LLOGLN(10, ("rdpPutImage: x %d y %d w %d h %d is_window %d", x, y, w, h, + pDst->type == DRAWABLE_WINDOW)); /* do original call */ rdpPutImageOrg(pDst, pGC, depth, x, y, w, h, leftPad, format, pBits); @@ -130,7 +132,7 @@ rdpPutImage(DrawablePtr pDst, GCPtr pGC, int depth, int x, int y, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpPutImage: gettig dirty")); + LLOGLN(10, ("rdpPutImage: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; @@ -161,7 +163,7 @@ rdpPutImage(DrawablePtr pDst, GCPtr pGC, int depth, int x, int y, box.x2 = box.x1 + w; box.y2 = box.y1 + h; RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 3); RegionUninit(®1); } else if (got_id) @@ -183,7 +185,7 @@ rdpPutImage(DrawablePtr pDst, GCPtr pGC, int depth, int x, int y, RegionInit(®2, NullBox, 0); RegionCopy(®2, &clip_reg); RegionIntersect(®1, ®1, ®2); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 3); RegionUninit(®1); RegionUninit(®2); } diff --git a/xorg/X11R7.6/rdp/rdpdraw.c b/xorg/X11R7.6/rdp/rdpdraw.c index 839854af..4b900f4e 100644 --- a/xorg/X11R7.6/rdp/rdpdraw.c +++ b/xorg/X11R7.6/rdp/rdpdraw.c @@ -583,13 +583,35 @@ draw_item_pack(PixmapPtr pix, rdpPixmapRec *priv) return 0; } +static char g_strings[][32] = +{ + "Composite", /* 0 */ + "CopyArea", /* 1 */ + "PolyFillRect", /* 2 */ + "PutImage", /* 3 */ + "PolyRectangle", /* 4 */ + "CopyPlane", /* 5 */ + "PolyArc", /* 6 */ + "FillPolygon", /* 7 */ + "PolyFillArc", /* 8 */ + "ImageText8", /* 9 */ + "PolyText8", /* 10 */ + "PolyText16", /* 11 */ + "ImageText16", /* 12 */ + "ImageGlyphBlt", /* 13 */ + "PolyGlyphBlt", /* 14 */ + "PushPixels", /* 15 */ + "Other" +}; + /******************************************************************************/ int draw_item_add_img_region(rdpPixmapRec *priv, RegionPtr reg, int opcode, - int type) + int type, int code) { struct rdp_draw_item *di; + LLOGLN(10, ("draw_item_add_img_region: %s", g_strings[code])); di = (struct rdp_draw_item *)g_malloc(sizeof(struct rdp_draw_item), 1); di->type = type; di->reg = RegionCreate(NullBox, 0); @@ -606,6 +628,7 @@ draw_item_add_fill_region(rdpPixmapRec *priv, RegionPtr reg, int color, { struct rdp_draw_item *di; + LLOGLN(10, ("draw_item_add_fill_region:")); di = (struct rdp_draw_item *)g_malloc(sizeof(struct rdp_draw_item), 1); di->type = RDI_FILL; di->u.fill.fg_color = color; @@ -691,6 +714,10 @@ rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth, priv->kind_width = width; pScreen->ModifyPixmapHeader(rv, org_width, 0, 0, 0, 0, 0); pScreen->CreatePixmap = rdpCreatePixmap; + if (org_width == 0 && height == 0) + { + priv->is_scratch = 1; + } return rv; } @@ -741,7 +768,8 @@ xrdp_is_os(PixmapPtr pix, rdpPixmapPtr priv) height = pix->drawable.height; if ((pix->usage_hint == 0) && (pix->drawable.depth >= g_rdpScreen.depth) && - (width > 1) && (height > 1) && (priv->kind_width > 0)) + (width > 0) && (height > 0) && (priv->kind_width > 0) && + (priv->is_scratch == 0)) { LLOGLN(10, ("%d %d", priv->kind_width, pix->drawable.width)); priv->rdpindex = rdpup_add_os_bitmap(pix, priv); @@ -760,7 +788,7 @@ xrdp_is_os(PixmapPtr pix, rdpPixmapPtr priv) { draw_item_remove_all(priv); RegionInit(®1, &box, 0); - draw_item_add_img_region(priv, ®1, GXcopy, RDI_IMGLL); + draw_item_add_img_region(priv, ®1, GXcopy, RDI_IMGLL, 16); RegionUninit(®1); priv->is_dirty = 1; priv->con_number = g_con_number; @@ -995,6 +1023,7 @@ void rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion) { RegionRec reg; + RegionRec reg1; RegionRec clip; int dx; int dy; @@ -1004,12 +1033,11 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion) int num_reg_rects; BoxRec box1; BoxRec box2; + BoxPtr box3; LLOGLN(10, ("in rdpCopyWindow")); RegionInit(®, NullBox, 0); RegionCopy(®, pOldRegion); - g_pScreen->CopyWindow = g_rdpScreen.CopyWindow; - g_pScreen->CopyWindow(pWin, ptOldOrg, pOldRegion); RegionInit(&clip, NullBox, 0); RegionCopy(&clip, &pWin->borderClip); dx = pWin->drawable.x - ptOldOrg.x; @@ -1017,30 +1045,45 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion) if (g_do_dirty_ons) { - LLOGLN(0, ("rdpCopyWindow: gettig dirty TODO")); - //draw_item_add_srcblt_region + rdpup_check_dirty_screen(&g_screenPriv); + } + rdpup_begin_update(); + num_clip_rects = REGION_NUM_RECTS(&clip); + num_reg_rects = REGION_NUM_RECTS(®); + LLOGLN(10, ("rdpCopyWindow: num_clip_rects %d num_reg_rects %d", + num_clip_rects, num_reg_rects)); + + /* when there is a huge list of screen copies, just send as bitmap + firefox dragging test does this */ + if ((num_clip_rects > 16) && (num_reg_rects > 16)) + { + box3 = RegionExtents(®); + rdpup_send_area(0, box3->x1, box3->y1, + box3->x2 - box3->x1, + box3->y2 - box3->y1); } else { - rdpup_begin_update(); - num_clip_rects = REGION_NUM_RECTS(&clip); - num_reg_rects = REGION_NUM_RECTS(®); /* should maybe sort the rects instead of checking dy < 0 */ /* If we can depend on the rects going from top to bottom, left - to right we are ok */ + to right we are ok */ if (dy < 0 || (dy == 0 && dx < 0)) { for (j = 0; j < num_clip_rects; j++) { box1 = REGION_RECTS(&clip)[j]; - rdpup_set_clip(box1.x1, box1.y1, box1.x2 - box1.x1, box1.y2 - box1.y1); + rdpup_set_clip(box1.x1, box1.y1, + box1.x2 - box1.x1, + box1.y2 - box1.y1); for (i = 0; i < num_reg_rects; i++) { box2 = REGION_RECTS(®)[i]; - rdpup_screen_blt(box2.x1 + dx, box2.y1 + dy, box2.x2 - box2.x1, - box2.y2 - box2.y1, box2.x1, box2.y1); + rdpup_screen_blt(box2.x1 + dx, box2.y1 + dy, + box2.x2 - box2.x1, + box2.y2 - box2.y1, + box2.x1, box2.y1); } } } @@ -1049,23 +1092,29 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion) for (j = num_clip_rects - 1; j >= 0; j--) { box1 = REGION_RECTS(&clip)[j]; - rdpup_set_clip(box1.x1, box1.y1, box1.x2 - box1.x1, box1.y2 - box1.y1); + rdpup_set_clip(box1.x1, box1.y1, + box1.x2 - box1.x1, + box1.y2 - box1.y1); for (i = num_reg_rects - 1; i >= 0; i--) { box2 = REGION_RECTS(®)[i]; - rdpup_screen_blt(box2.x1 + dx, box2.y1 + dy, box2.x2 - box2.x1, - box2.y2 - box2.y1, box2.x1, box2.y1); + rdpup_screen_blt(box2.x1 + dx, box2.y1 + dy, + box2.x2 - box2.x1, + box2.y2 - box2.y1, + box2.x1, box2.y1); } } } - - rdpup_reset_clip(); - rdpup_end_update(); } + rdpup_reset_clip(); + rdpup_end_update(); + RegionUninit(®); RegionUninit(&clip); + g_pScreen->CopyWindow = g_rdpScreen.CopyWindow; + g_pScreen->CopyWindow(pWin, ptOldOrg, pOldRegion); g_pScreen->CopyWindow = rdpCopyWindow; } @@ -1104,7 +1153,7 @@ rdpClearToBackground(WindowPtr pWin, int x, int y, int w, int h, if (g_do_dirty_ons) { - draw_item_add_img_region(&g_screenPriv, ®, GXcopy, RDI_IMGLL); + draw_item_add_img_region(&g_screenPriv, ®, GXcopy, RDI_IMGLL, 16); } else { @@ -1142,7 +1191,7 @@ rdpRestoreAreas(WindowPtr pWin, RegionPtr prgnExposed) if (g_do_dirty_ons) { - draw_item_add_img_region(&g_screenPriv, ®, GXcopy, RDI_IMGLL); + draw_item_add_img_region(&g_screenPriv, ®, GXcopy, RDI_IMGLL, 16); } else { @@ -1304,7 +1353,7 @@ rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, if (g_do_dirty_ons) { - LLOGLN(0, ("rdpComposite: gettig dirty")); + LLOGLN(10, ("rdpComposite: gettig dirty")); g_screenPriv.is_dirty = 1; pDirtyPriv = &g_screenPriv; dirty_type = RDI_IMGLL; @@ -1337,7 +1386,7 @@ rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, if (dirty_type != 0) { - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 0); } else if (got_id) { @@ -1370,7 +1419,7 @@ rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, if (dirty_type != 0) { RegionInit(®1, &box, 0); - draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type); + draw_item_add_img_region(pDirtyPriv, ®1, GXcopy, dirty_type, 0); RegionUninit(®1); } else if (got_id) diff --git a/xorg/X11R7.6/rdp/rdpmain.c b/xorg/X11R7.6/rdp/rdpmain.c index ffb43d1f..f1645cfe 100644 --- a/xorg/X11R7.6/rdp/rdpmain.c +++ b/xorg/X11R7.6/rdp/rdpmain.c @@ -46,10 +46,12 @@ 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 */ Bool g_wrapWindow = 1; Bool g_wrapPixmap = 1; +int g_codec_mode = 0; /* 0 = standard rdp, 1 = rfx */ + rdpPixmapRec g_screenPriv; /* if true, running in RemoteApp / RAIL mode */ @@ -237,7 +239,7 @@ rdpScreenInit(int index, ScreenPtr pScreen, int argc, char **argv) memset(&g_screenPriv, 0, sizeof(g_screenPriv)); /*dpix = 75; - dpiy = 75;*/ + dpiy = 75; */ dpix = PixelDPI; dpiy = PixelDPI; diff --git a/xorg/X11R7.6/rdp/rdpup.c b/xorg/X11R7.6/rdp/rdpup.c index 61ed302a..06c8bd73 100644 --- a/xorg/X11R7.6/rdp/rdpup.c +++ b/xorg/X11R7.6/rdp/rdpup.c @@ -970,7 +970,7 @@ rdpup_check(void) int rdpup_begin_update(void) { - LLOGLN(10, ("rdpup_begin_update")); + LLOGLN(10, ("rdpup_begin_update:")); if (g_connected) { @@ -978,7 +978,6 @@ rdpup_begin_update(void) { return 0; } - init_stream(g_out_s, 0); s_push_layer(g_out_s, iso_hdr, 8); out_uint16_le(g_out_s, 1); /* begin update */ @@ -1001,6 +1000,7 @@ rdpup_end_update(void) { if (g_do_dirty_ons) { + /* in this mode, end update is only called in check dirty */ rdpup_send_pending(); } else @@ -1059,7 +1059,8 @@ rdpup_screen_blt(short x, short y, int cx, int cy, short srcx, short srcy) { if (g_connected) { - LLOGLN(10, (" rdpup_screen_blt")); + LLOGLN(10, (" rdpup_screen_blt x %d y %d cx %d cy %d srcx %d srcy %d", + x, y, cx, cy, srcx, srcy)); rdpup_pre_check(16); out_uint16_le(g_out_s, 4); /* screen blt */ out_uint16_le(g_out_s, 16); /* size */ @@ -1868,7 +1869,7 @@ rdpup_check_dirty(PixmapPtr pDirtyPixmap, rdpPixmapRec *pDirtyPriv) g_os_bitmaps[pDirtyPriv->rdpindex].stamp = g_os_bitmap_stamp; g_os_bitmap_stamp++; - LLOGLN(10, ("-----------------got dirty")); + LLOGLN(10, ("rdpup_check_dirty: got dirty")); rdpup_switch_os_surface(pDirtyPriv->rdpindex); rdpup_get_pixmap_image_rect(pDirtyPixmap, &id); rdpup_begin_update(); @@ -1994,7 +1995,7 @@ rdpup_check_dirty_screen(rdpPixmapRec *pDirtyPriv) return 0; } - LLOGLN(10, ("-----------------got dirty")); + LLOGLN(10, ("rdpup_check_dirty_screen: got dirty")); rdpup_get_screen_image_rect(&id); rdpup_begin_update(); draw_item_pack(0, pDirtyPriv); |