]> source.dussan.org Git - tigervnc.git/commitdiff
Make sure we filter out any screens that aren't fully inside the new
authorPierre Ossman <ossman@cendio.se>
Fri, 20 Jul 2012 12:32:52 +0000 (12:32 +0000)
committerPierre Ossman <ossman@cendio.se>
Fri, 20 Jul 2012 12:32:52 +0000 (12:32 +0000)
framebuffer.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4945 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/DesktopWindow.cxx

index 391c023e544c28d0ebb673372434458b81d1b4f1..32e202a80b0d780a7495d9218a77d0bcfa059806 100644 (file)
@@ -489,9 +489,12 @@ void DesktopWindow::remoteResize()
     int i;
     rdr::U32 id;
     int sx, sy, sw, sh;
+    Rect fb_rect, screen_rect;
 
     // In full screen we report all screens that are fully covered.
 
+    fb_rect.setXYWH(x + , 0, width, height);
+
     // If we can find a matching screen in the existing set, we use
     // that, otherwise we create a brand new screen.
     //
@@ -501,6 +504,11 @@ void DesktopWindow::remoteResize()
     for (i = 0;i < Fl::screen_count();i++) {
       Fl::screen_xywh(sx, sy, sw, sh, i);
 
+      // Check that the screen is fully inside the framebuffer
+      screen_rect.setXYWH(sx, sy, sw, sh);
+      if (!screen_rect.enclosed_by(fb_rect))
+        continue;
+
       // Look for perfectly matching existing screen...
       for (iter = cc->cp.screenLayout.begin();
            iter != cc->cp.screenLayout.end(); ++iter) {