Comment 52 for bug 156550

Revision history for this message
In , Jamie (jamie-redhat-bugs) wrote :

> The root window is the canvas. Extended geometry describes
> how much of the canvas is occluded from view, and gives
> hints about where to place menus so they're all on one
> screen and whatnot. If you paint to the bounding box
> covering all extended geometry, the output should look
> right.

Well, xscreensaver doesn't work that way. If it worked that
way, I wouldn't have to call Xinerama functions at all. A
different screen saver is run on each *monitor*. It does
not run a single saver that spans monitors and is then
clipped. To accomplish this, xscreensaver needs to know
where the *glass* is.

You seem to be telling me, "you're no longer allowed to know
that." I don't find that a particularly satisfying answer.

(The reason xscreensaver does it this way is simple: with
screen savers, spanning monitor looks like ass with all but
a tiny handful of few savers. That's why Apple does it this
was as well.)

> You might as an optimization create just one window per
> output, if they're all completely disjoint, as that will
> save some memory and probably perform better.

What do you mean by "output"?

> I wonder how OSX handles this. I suspect they just don't
> allow any overlap cases besides exact cloning.

Correct. If you're not cloning, then the "Monitor
Arrangement" preference panel lets you drag the rectangles
representing every attached monitor around. Edges are
constrained to at least partially touch (on top, bottom,
left or right), and rectangles cannot overlap.

However, screen savers are run "full screen" on each
*monitor*. With screen savers, placement of monitors and
size of the virtual desktop canvas do not come into play at
all.