open-src/xserver/xvnc/vnc-bounds.patch
changeset 606 068c11b419c9
equal deleted inserted replaced
605:e5259db5befc 606:068c11b419c9
       
     1 ## Patch originally from Fedora - Revision 1.1 of:
       
     2 http://cvs.fedoraproject.org/viewvc/rpms/vnc/devel/vnc-bounds.patch
       
     3 with paths adjusted to match sources in tarball before files are moved
       
     4 
       
     5 diff -up vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.bounds vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc
       
     6 --- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc.bounds	2008-03-17 16:46:27.000000000 +0100
       
     7 +++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/XserverDesktop.cc	2008-03-17 16:59:11.000000000 +0100
       
     8 @@ -486,32 +486,36 @@ void XserverDesktop::add_changed(RegionP
       
     9  {
       
    10    if (ignoreHooks_) return;
       
    11    if (grabbing) return;
       
    12 +
       
    13 +  BoxRec screenbox;
       
    14 +  RegionPtr newreg = REGION_CREATE(pScreen, 0, 0);
       
    15 +
       
    16 +  screenbox.x1 = screenbox.y1 = 0;
       
    17 +  screenbox.x2 = pScreen->width;
       
    18 +  screenbox.y2 = pScreen->height;
       
    19 +
       
    20 +  RegionPtr screenreg = REGION_CREATE(pScreen, &screenbox, 0);
       
    21 +  REGION_INTERSECT(pScreen, newreg, reg, screenreg);
       
    22 +  REGION_DESTROY (pScreen, screenreg);
       
    23 +
       
    24    try {
       
    25      rfb::Region rfbReg;
       
    26 -    rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, reg),
       
    27 -                                     REGION_NUM_RECTS(reg),
       
    28 -                                     (ShortRect*)REGION_RECTS(reg));
       
    29 +    rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, newreg),
       
    30 +                                     REGION_NUM_RECTS(newreg),
       
    31 +                                     (ShortRect*)REGION_RECTS(newreg));
       
    32      server->add_changed(rfbReg);
       
    33      deferUpdate();
       
    34    } catch (rdr::Exception& e) {
       
    35      vlog.error("XserverDesktop::add_changed: %s",e.str());
       
    36    }
       
    37 +  REGION_DESTROY (pScreen, newreg);
       
    38  }
       
    39  
       
    40  void XserverDesktop::add_copied(RegionPtr dst, int dx, int dy)
       
    41  {
       
    42 -  if (ignoreHooks_) return;
       
    43 -  if (grabbing) return;
       
    44 -  try {
       
    45 -    rfb::Region rfbReg;
       
    46 -    rfbReg.setExtentsAndOrderedRects((ShortRect*)REGION_EXTENTS(pScreen, dst),
       
    47 -                                     REGION_NUM_RECTS(dst),
       
    48 -                                     (ShortRect*)REGION_RECTS(dst));
       
    49 -    server->add_copied(rfbReg, rfb::Point(dx, dy));
       
    50 -    deferUpdate();
       
    51 -  } catch (rdr::Exception& e) {
       
    52 -    vlog.error("XserverDesktop::add_copied: %s",e.str());
       
    53 -  }
       
    54 +  add_changed (dst);
       
    55 +  REGION_TRANSLATE (pScreen, dst, -dx, -dy);
       
    56 +  add_changed (dst);
       
    57  }
       
    58  
       
    59  void XserverDesktop::positionCursor()