|
|
|
@ -148,8 +148,6 @@ rdpCopyAreaWndToPixmap(WindowPtr pSrcWnd,
|
|
|
|
|
int ldstx;
|
|
|
|
|
int ldsty;
|
|
|
|
|
int num_clips;
|
|
|
|
|
int dx;
|
|
|
|
|
int dy;
|
|
|
|
|
int j;
|
|
|
|
|
BoxRec box;
|
|
|
|
|
RegionPtr rv;
|
|
|
|
@ -182,26 +180,12 @@ rdpCopyAreaWndToPixmap(WindowPtr pSrcWnd,
|
|
|
|
|
{
|
|
|
|
|
rdpup_switch_os_surface(pDstPriv->rdpindex);
|
|
|
|
|
rdpup_begin_update();
|
|
|
|
|
dx = dstx - srcx;
|
|
|
|
|
dy = dsty - srcy;
|
|
|
|
|
|
|
|
|
|
if ((dy < 0) || ((dy == 0) && (dx < 0)))
|
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < num_clips; j++)
|
|
|
|
|
{
|
|
|
|
|
box = REGION_RECTS(&clip_reg)[j];
|
|
|
|
|
rdpup_set_clip(box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1);
|
|
|
|
|
rdpup_screen_blt(ldstx, ldsty, w, h, lsrcx, lsrcy);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
for (j = 0; j < num_clips; j++)
|
|
|
|
|
{
|
|
|
|
|
for (j = num_clips - 1; j >= 0; j--)
|
|
|
|
|
{
|
|
|
|
|
box = REGION_RECTS(&clip_reg)[j];
|
|
|
|
|
rdpup_set_clip(box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1);
|
|
|
|
|
rdpup_screen_blt(ldstx, ldsty, w, h, lsrcx, lsrcy);
|
|
|
|
|
}
|
|
|
|
|
box = REGION_RECTS(&clip_reg)[j];
|
|
|
|
|
rdpup_set_clip(box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1);
|
|
|
|
|
rdpup_screen_blt(ldstx, ldsty, w, h, lsrcx, lsrcy);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rdpup_reset_clip();
|
|
|
|
@ -292,6 +276,8 @@ rdpCopyAreaPixmapToPixmap(PixmapPtr pSrcPixmap, rdpPixmapRec *pSrcPriv,
|
|
|
|
|
int cd;
|
|
|
|
|
int j;
|
|
|
|
|
int num_clips;
|
|
|
|
|
int dx;
|
|
|
|
|
int dy;
|
|
|
|
|
RegionPtr rv;
|
|
|
|
|
RegionRec clip_reg;
|
|
|
|
|
BoxRec box;
|
|
|
|
@ -325,14 +311,30 @@ rdpCopyAreaPixmapToPixmap(PixmapPtr pSrcPixmap, rdpPixmapRec *pSrcPriv,
|
|
|
|
|
{
|
|
|
|
|
rdpup_switch_os_surface(pDstPriv->rdpindex);
|
|
|
|
|
rdpup_begin_update();
|
|
|
|
|
dx = dstx - srcx;
|
|
|
|
|
dy = dsty - srcy;
|
|
|
|
|
|
|
|
|
|
LLOGLN(10, ("rdpCopyAreaPixmapToPixmap: num_clips %d", num_clips));
|
|
|
|
|
|
|
|
|
|
for (j = 0; j < num_clips; j++)
|
|
|
|
|
if ((dy < 0) || ((dy == 0) && (dx < 0)))
|
|
|
|
|
{
|
|
|
|
|
box = REGION_RECTS(&clip_reg)[j];
|
|
|
|
|
rdpup_set_clip(box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1);
|
|
|
|
|
rdpup_paint_rect_os(ldstx, ldsty, w, h, pSrcPriv->rdpindex, lsrcx, lsrcy);
|
|
|
|
|
LLOGLN(10, ("%d %d %d %d %d %d", ldstx, ldsty, w, h, lsrcx, lsrcy));
|
|
|
|
|
for (j = 0; j < num_clips; j++)
|
|
|
|
|
{
|
|
|
|
|
box = REGION_RECTS(&clip_reg)[j];
|
|
|
|
|
rdpup_set_clip(box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1);
|
|
|
|
|
rdpup_paint_rect_os(ldstx, ldsty, w, h, pSrcPriv->rdpindex, lsrcx, lsrcy);
|
|
|
|
|
LLOGLN(10, ("%d %d %d %d %d %d", ldstx, ldsty, w, h, lsrcx, lsrcy));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (j = num_clips - 1; j >= 0; j--)
|
|
|
|
|
{
|
|
|
|
|
box = REGION_RECTS(&clip_reg)[j];
|
|
|
|
|
rdpup_set_clip(box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1);
|
|
|
|
|
rdpup_paint_rect_os(ldstx, ldsty, w, h, pSrcPriv->rdpindex, lsrcx, lsrcy);
|
|
|
|
|
LLOGLN(10, ("%d %d %d %d %d %d", ldstx, ldsty, w, h, lsrcx, lsrcy));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rdpup_reset_clip();
|
|
|
|
|