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