When I previously 0&'d out the rotate code,
              else if (0 & rot & (RR_Rotate_90|RR_Rotate_270))
I failed to notice a matching piece of code in the HAVE_RANDR_12
stanza further down; a few judicious fputs revealed to me that the
latter is the one being executed.  When I 0& *it* out,
              if (0 & crtci->rotation & (RR_Rotate_90|RR_Rotate_270))
the randr_versus_xinerama_fight message goes away and xscreensaver
behaves correctly.

<patch>
diff -bu /usr/opt/xscreensaver-5.07/driver/screens.c.orig 
/usr/opt/xscreensaver-5.07/driver/screens.c
--- /usr/opt/xscreensaver-5.07/driver/screens.c.orig    2008-08-08 
23:06:03.000000000 +0200
+++ /usr/opt/xscreensaver-5.07/driver/screens.c 2008-08-14 10:21:51.000000000 
+0200
@@ -417,7 +417,7 @@
               m->x        = crtci->x;
               m->y        = crtci->y;
 
-              if (crtci->rotation & (RR_Rotate_90|RR_Rotate_270))
+              if (0 & crtci->rotation & (RR_Rotate_90|RR_Rotate_270))
                 {
                   m->width  = crtci->height;
                   m->height = crtci->width;

Diff finished.  Thu Aug 14 10:21:58 2008
</patch>

<quote src="driver/test-randr">
test-randr: 10:22:35: XRRQueryExtension(dpy, ...) ==> 115, 186
test-randr: 10:22:35: XRRQueryVersion(dpy, ...) ==> 1, 2

test-randr: 10:22:35: Screen 0
test-randr: 10:22:35:   Available Rotations:     0 90 180 270
test-randr: 10:22:35:   Current Rotation:        90
test-randr: 10:22:35:   Available Reflections:   X Y
test-randr: 10:22:35:   Current Reflections:     none
test-randr: 10:22:35:   + size 0: 1600 x 1200    rates: 60
test-randr: 10:22:35:     size 1: 1680 x 1050    rates: 60
test-randr: 10:22:35:     size 2: 1600 x 1024    rates: 60
test-randr: 10:22:35:     size 3: 1400 x 1050    rates: 75 70 60
test-randr: 10:22:35:     size 4: 1280 x 1024    rates: 85 75 60
test-randr: 10:22:35:     size 5: 1440 x 900     rates: 60
test-randr: 10:22:35:     size 6: 1280 x 960     rates: 85 60
test-randr: 10:22:35:     size 7: 1280 x 800     rates: 60
test-randr: 10:22:35:     size 8: 1152 x 864     rates: 85 75
test-randr: 10:22:35:     size 9: 1280 x 768     rates: 60
test-randr: 10:22:35:     size 10: 1152 x 768    rates: 55
test-randr: 10:22:35:     size 11: 1024 x 768    rates: 85 75 70 60
test-randr: 10:22:35:     size 12: 832 x 624     rates: 75
test-randr: 10:22:35:     size 13: 800 x 600     rates: 85 72 75 60 56
test-randr: 10:22:35:     size 14: 640 x 480     rates: 85 75 73 60
test-randr: 10:22:35:     size 15: 720 x 400     rates: 85 70
test-randr: 10:22:35:     size 16: 640 x 400     rates: 85
test-randr: 10:22:35:     size 17: 640 x 350     rates: 85

test-randr: 10:22:35:   Output 0: VGA: connected (73)
test-randr: 10:22:35:   + CRTC 0 (73): 1200x1600+0+0
test-randr: 10:22:35:     CRTC 1 (74): 0x0+0+0


test-randr: awaiting events...
</quote>

<quote src="driver/test-xinerama">
test-xinerama: 10:23:13: XineramaQueryExtension(dpy, ...) ==> 0, 0
test-xinerama: 10:23:13: XineramaIsActive(dpy) ==> True
test-xinerama: 10:23:13: XineramaQueryVersion(dpy, ...) ==> 1, 1
test-xinerama: 10:23:13: 1 Xinerama screens
test-xinerama: 10:23:13:   screen 0: 1200x1600+0+0
</quote>

so randr *still* thinks it's got a 1200x1600 screen !
But now it does something right that it got wrong before !

        Eddy.



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

Reply via email to