I poked through the code and found where the problem is occurring but
I don't know enough about the code to know the best approach to
patching it.

The code I poked through is from sid's gnome-utils_2.20.0.1-3.

In screenshot-utils.c in function screenshot_get_pixbuf() starting at
line 526 there is this:

  tmp = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
                                      x_orig, y_orig, 0, 0,
                                      width, height);

  rectangles = XShapeGetRectangles (GDK_DISPLAY (), GDK_WINDOW_XWINDOW (window),
                                    ShapeBounding, &rectangle_count, 
&rectangle_order);
  if (rectangle_count > 0)
    {
.... lots of lines ....
    }
  else
    {
      screenshot = tmp;
    }

On my 3-screen xinerama system (described above) when taking a
screenshot of the root window, the rectangle_count here is 1 so the
conditional evaluates to true. However, rectangles[0].width is 1680
(which is the width of my Screen0, not the width of my entire xinerama
display). Consequently the following code which copies the image data
from the sole rectangle into the pixbuf only copies the leftmost 1680
pixels, rather than the whole display. Is it a bug in
XShapeGetRectangles() that it returns a single rectangle with the
dimensions of Screen0 when called on the root window? Or is it a bug
in how gnome-screenshot is using this function?

If I change the conditional to if(0) and just let screenshot = tmp,
skipping over all the special rectangle handling, the screenshot works
perfectly.

I don't know the purpose of the special rectangle handling so I can't
suggest a patch that I'm sure wouldn't break other cases but I'm sure
someone upstream knows what to do about this!



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to