Questions on RandR / Xinerama programming.

Teika Kazura teika at lavabit.com
Fri May 7 22:39:04 PDT 2010


Dear list, I have questions on RandR / Xinerama programming. I'm a
developer of window manager "Sawfish", but I don't have external
display. 

My main concern is the relation between the whole which contains all
area (partially) covered by crt's, and parts = crt's.

Display * dpy; 

1. With libXinerama, I'm told that the size of the default screen
of the struct Display is, roughly speaking, that of all physical screens
combined together. Then, what Xinerama implements is the combination
of physical monitor to form one big "screen", right?

2. In libXrandr on the other hand, it seems that each of
dpy->screen[i] corresponds to crt / crt controller. (I've found it by
looking into the source of XRRUpdateConfiguration. There,
dpy->screen[index].width/height are affected by the rotation
status. But the rotation happens on each physical monitor, not the
entire coordinate system.)

But the RandR protcol uses the word "screen" as the entire coordinate
system which houses all of crt's. What are display (struct Display)
and screen (member of Display) exactly? Is there terminology confusion
among Xlib, Xinerama and Xrandr? To which does the root window
correspond?

3. How can you obtain the "offset" of each crtc/output from (0, 0) of
the entire coordinate? And the entire "screen" size?

4. If my guesses above are right, then RandR is not the superset of
Xinerama, contrary to the implication in RandR protocol 1.3.1, section
11.2. Instead, RandR is a replacement indeed, no? (I may be confusing
user interface and API of libXinerama and libXrandr. :P)


I'm thinking of submiting doc patch / Wikipedia update after the smoke
clears. Maybe tutorial, too. Please be kind. :)

With best regards,
Teika (Teika kazura)




More information about the xorg mailing list