|
Adam Tkac |
5009736 |
diff -up tightvnc-1.5.0-20081015svn3022/unix/xserver/hw/vnc/XserverDesktop.cc.bounds tightvnc-1.5.0-20081015svn3022/unix/xserver/hw/vnc/XserverDesktop.cc
|
|
Adam Tkac |
5009736 |
--- tightvnc-1.5.0-20081015svn3022/unix/xserver/hw/vnc/XserverDesktop.cc.bounds 2008-10-15 15:23:24.000000000 +0200
|
|
Adam Tkac |
5009736 |
+++ tightvnc-1.5.0-20081015svn3022/unix/xserver/hw/vnc/XserverDesktop.cc 2008-10-23 12:46:31.000000000 +0200
|
|
Adam Tkac |
5009736 |
@@ -500,32 +500,36 @@ void XserverDesktop::add_changed(RegionP
|
|
Adam Tkac |
5009736 |
{
|
|
Adam Tkac |
5009736 |
if (ignoreHooks_) return;
|
|
Adam Tkac |
5009736 |
if (grabbing) return;
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+ BoxRec screenbox;
|
|
Adam Tkac |
5009736 |
+ RegionPtr newreg = REGION_CREATE(pScreen, 0, 0);
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+ screenbox.x1 = screenbox.y1 = 0;
|
|
Adam Tkac |
5009736 |
+ screenbox.x2 = pScreen->width;
|
|
Adam Tkac |
5009736 |
+ screenbox.y2 = pScreen->height;
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
+ RegionPtr screenreg = REGION_CREATE(pScreen, &screenbox, 0);
|
|
Adam Tkac |
5009736 |
+ REGION_INTERSECT(pScreen, newreg, reg, screenreg);
|
|
Adam Tkac |
5009736 |
+ REGION_DESTROY (pScreen, screenreg);
|
|
Adam Tkac |
5009736 |
+
|
|
Adam Tkac |
5009736 |
try {
|
|
Adam Tkac |
5009736 |
rfb::Region rfbReg;
|
|
Adam Tkac |
5009736 |
- rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, reg),
|
|
Adam Tkac |
5009736 |
- REGION_NUM_RECTS(reg),
|
|
Adam Tkac |
5009736 |
- (ShortRect*)REGION_RECTS(reg));
|
|
Adam Tkac |
5009736 |
+ rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, newreg),
|
|
Adam Tkac |
5009736 |
+ REGION_NUM_RECTS(newreg),
|
|
Adam Tkac |
5009736 |
+ (ShortRect*)REGION_RECTS(newreg));
|
|
Adam Tkac |
5009736 |
server->add_changed(rfbReg);
|
|
Adam Tkac |
5009736 |
deferUpdate();
|
|
Adam Tkac |
5009736 |
} catch (rdr::Exception& e) {
|
|
Adam Tkac |
5009736 |
vlog.error("XserverDesktop::add_changed: %s",e.str());
|
|
Adam Tkac |
5009736 |
}
|
|
Adam Tkac |
5009736 |
+ REGION_DESTROY (pScreen, newreg);
|
|
Adam Tkac |
5009736 |
}
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
void XserverDesktop::add_copied(RegionPtr dst, int dx, int dy)
|
|
Adam Tkac |
5009736 |
{
|
|
Adam Tkac |
5009736 |
- if (ignoreHooks_) return;
|
|
Adam Tkac |
5009736 |
- if (grabbing) return;
|
|
Adam Tkac |
5009736 |
- try {
|
|
Adam Tkac |
5009736 |
- rfb::Region rfbReg;
|
|
Adam Tkac |
5009736 |
- rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, dst),
|
|
Adam Tkac |
5009736 |
- REGION_NUM_RECTS(dst),
|
|
Adam Tkac |
5009736 |
- (ShortRect*)REGION_RECTS(dst));
|
|
Adam Tkac |
5009736 |
- server->add_copied(rfbReg, rfb::Point(dx, dy));
|
|
Adam Tkac |
5009736 |
- deferUpdate();
|
|
Adam Tkac |
5009736 |
- } catch (rdr::Exception& e) {
|
|
Adam Tkac |
5009736 |
- vlog.error("XserverDesktop::add_copied: %s",e.str());
|
|
Adam Tkac |
5009736 |
- }
|
|
Adam Tkac |
5009736 |
+ add_changed (dst);
|
|
Adam Tkac |
5009736 |
+ REGION_TRANSLATE (pScreen, dst, -dx, -dy);
|
|
Adam Tkac |
5009736 |
+ add_changed (dst);
|
|
Adam Tkac |
5009736 |
}
|
|
Adam Tkac |
5009736 |
|
|
Adam Tkac |
5009736 |
void XserverDesktop::positionCursor()
|