summaryrefslogtreecommitdiffstats
path: root/xorg/server/module/rdpDraw.c
diff options
context:
space:
mode:
authorLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2014-01-28 18:09:35 -0800
committerLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2014-01-28 18:09:35 -0800
commitec4791ac405b75f8ee84527c8fe51f8a7d69e9ca (patch)
tree89ae0fe87fe10c556e7c25b3ea8ca431c1575602 /xorg/server/module/rdpDraw.c
parentc96dd8df2b4398ddbb8e931bdf673d43c4a77f51 (diff)
parentb4b73056fc8c119beb032d20fc763bc40af3efa9 (diff)
downloadxrdp-proprietary-ec4791ac405b75f8ee84527c8fe51f8a7d69e9ca.tar.gz
xrdp-proprietary-ec4791ac405b75f8ee84527c8fe51f8a7d69e9ca.zip
Merge branch 'devel' of github.com:/neutrinolabs/xrdp into devel
Diffstat (limited to 'xorg/server/module/rdpDraw.c')
-rw-r--r--xorg/server/module/rdpDraw.c57
1 files changed, 37 insertions, 20 deletions
diff --git a/xorg/server/module/rdpDraw.c b/xorg/server/module/rdpDraw.c
index 5593ad2c..b4e689af 100644
--- a/xorg/server/module/rdpDraw.c
+++ b/xorg/server/module/rdpDraw.c
@@ -289,7 +289,6 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion)
{
ScreenPtr pScreen;
rdpPtr dev;
- rdpClientCon *clientCon;
RegionRec reg;
RegionRec clip;
int dx;
@@ -297,7 +296,9 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion)
int num_clip_rects;
int num_reg_rects;
BoxPtr box;
+ BoxRec box1;
+ LLOGLN(10, ("rdpCopyWindow:"));
pScreen = pWin->drawable.pScreen;
dev = rdpGetDevFromScreen(pScreen);
dev->counts.rdpCopyWindowCallCount++;
@@ -318,36 +319,33 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion)
if ((num_clip_rects == 0) || (num_reg_rects == 0))
{
- rdpRegionUninit(&reg);
- rdpRegionUninit(&clip);
- return;
}
-
- if ((num_clip_rects > 16) && (num_reg_rects > 16))
+ else
{
- box = rdpRegionExtents(&reg);
- clientCon = dev->clientConHead;
- while (clientCon != NULL)
+ if ((num_clip_rects > 16) || (num_reg_rects > 16))
{
- rdpClientConAddDirtyScreenBox(dev, clientCon, box);
- clientCon = clientCon->next;
+ LLOGLN(10, ("rdpCopyWindow: big list"));
+ box = rdpRegionExtents(&reg);
+ box1 = *box;
+ box1.x1 += dx;
+ box1.y1 += dy;
+ box1.x2 += dx;
+ box1.y2 += dy;
+ rdpClientConAddAllBox(dev, &box1, &(pWin->drawable));
}
- }
- else
- {
- rdpRegionTranslate(&reg, dx, dy);
- rdpRegionIntersect(&reg, &reg, &clip);
- clientCon = dev->clientConHead;
- while (clientCon != NULL)
+ else
{
- rdpClientConAddDirtyScreenReg(dev, clientCon, &reg);
- clientCon = clientCon->next;
+ rdpRegionTranslate(&reg, dx, dy);
+ rdpRegionIntersect(&reg, &reg, &clip);
+ rdpClientConAddAllReg(dev, &reg, &(pWin->drawable));
}
}
rdpRegionUninit(&reg);
rdpRegionUninit(&clip);
}
+#if XRDP_CLOSESCR == 1 /* before v1.13 */
+
/*****************************************************************************/
Bool
rdpCloseScreen(int index, ScreenPtr pScreen)
@@ -363,6 +361,25 @@ rdpCloseScreen(int index, ScreenPtr pScreen)
return rv;
}
+#else
+
+/*****************************************************************************/
+Bool
+rdpCloseScreen(ScreenPtr pScreen)
+{
+ rdpPtr dev;
+ Bool rv;
+
+ LLOGLN(0, ("rdpCloseScreen:"));
+ dev = rdpGetDevFromScreen(pScreen);
+ dev->pScreen->CloseScreen = dev->CloseScreen;
+ rv = dev->pScreen->CloseScreen(pScreen);
+ dev->pScreen->CloseScreen = rdpCloseScreen;
+ return rv;
+}
+
+#endif
+
/******************************************************************************/
WindowPtr
rdpGetRootWindowPtr(ScreenPtr pScreen)