Bug 457685

Summary: xscreensaver occupies partial area on a two-monitor setup
Product: [Fedora] Fedora Reporter: aten <atenrok>
Component: xscreensaverAssignee: Mamoru TASAKA <mtasaka>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: 8CC: billcrawford1970, jwz, mtasaka
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-08-13 02:04:36 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
xscreensaver nvidia bug workaround none

Description aten 2008-08-03 15:05:58 UTC
Description of problem:

I have a Twin-view configuration setup with the LCD monitor and TV. It 
used to be that xscreensaver treated those independently and launched an 
individual action of whatever_the_screensaver_was_selected on each of them. After the  recent update of xscreensaver-gl-extras-gss-5.06-2.fc8 and
xscreensaver-gl-extras-5.06-2.fc8 my setup is treated as one common area 
and a single screensaver is launched in the middle. The unlock dialog also appears shifter on the main monitor, which apparently is the middle of the whole area. 


Version-Release number of selected component (if applicable):

$ rpm -qa | grep xscreensaver
xscreensaver-gl-base-5.06-2.fc8
xscreensaver-gl-extras-5.06-2.fc8
xscreensaver-gl-extras-gss-5.06-2.fc8
xscreensaver-base-5.06-2.fc8

How reproducible:

Steps to Reproduce:
1. launch xscreensaver-demo on a dual-monitor setup
2. Select screensaver
3. Press "Preview"
  
Actual results:

the screensaver occupies the area which presumably is in the middle between the two monitors.

Expected results:

two instances of screensaver occupying corresponding monitors. The unlog dialog appear in the center one monitors, depending on the position of the mouse cursor.


Additional info:

OS: Fedora 8 i386 on x86_64 hardware. 
Videoadapter: GeForce 6600. 
Driver: nvidia
Screens configuration: TwinView LCD 168x1050, TV 800x600 (right of LCD)

verbose log:
xscreensaver 5.06, copyright (c) 1991-2008 by Jamie Zawinski <jwz>.
xscreensaver: 08:46:46: running as sashko/users (501/100)
xscreensaver: 08:46:46: in process 9767.
xscreensaver: 08:46:46: running on display ":0.0"
xscreensaver: 08:46:46: vendor is The X.Org Foundation, 10300000.
xscreensaver: 08:46:46: useful extensions:
xscreensaver: 08:46:46:   MIT Screen-Saver (disabled at compile time)
xscreensaver: 08:46:46:   Shared Memory
xscreensaver: 08:46:46:   Double-Buffering
xscreensaver: 08:46:46:   Power Management
xscreensaver: 08:46:46:   GLX
xscreensaver: 08:46:46:   XF86 Video-Mode
xscreensaver: 08:46:46:   Xinerama
xscreensaver: 08:46:46:   Resize-and-Rotate
xscreensaver: 08:46:46: screen 0 non-colormapped depths: 0 24.
xscreensaver: 08:46:46: screens in use: 1
xscreensaver: 08:46:46:    0/0: 2480x1050+0+0 (default)
xscreensaver: 08:46:46: selecting RANDR events
xscreensaver: 08:46:46: consulting /proc/interrupts for keyboard activity.
xscreensaver: 08:46:46: 0: visual 0x21 (TrueColor,   depth: 24, cmap: 
default)
xscreensaver: 08:46:46: 0: saver window is 0x800001.
xscreensaver: 08:46:46: selecting events on extant windows... done.
xscreensaver: 08:46:46: awaiting idleness.

Comment 1 Mamoru TASAKA 2008-08-03 15:40:06 UTC
CCing to jwz

Comment 2 Mamoru TASAKA 2008-08-03 15:42:25 UTC
First of all:

To make it sure that you are not using gnome-screensaver, would you
remove gnome-screensaver and xscreensaver-gl-extras-gss then re-login?

Comment 3 aten 2008-08-03 16:32:00 UTC
(In reply to comment #2)
> First of all:
> 
> To make it sure that you are not using gnome-screensaver, would you
> remove gnome-screensaver and xscreensaver-gl-extras-gss then re-login?

just did. Same result

Comment 4 Jamie Zawinski 2008-08-03 17:12:48 UTC
> xscreensaver: 08:46:46:   Xinerama
> xscreensaver: 08:46:46:   Resize-and-Rotate

This says that your X server supports the Xinerama and RANDR extensions.  This is good.

> xscreensaver: 08:46:46: screens in use: 1
> xscreensaver: 08:46:46:    0/0: 2480x1050+0+0 (default)

This says that your server is claiming that you have a *single monitor* that is 2480x1050, instead of two monitors.  This is bad.

Please build and run the "test-xinerama" and "test-randr" programs from the xscreensaver-5.06/driver/ src directory, and paste the results here.

Comment 5 Mamoru TASAKA 2008-08-03 17:43:03 UTC
oleksandr:

Please use:
http://kojipkgs.fedoraproject.org/packages/xscreensaver/5.06/2.fc8.1/
if you find it rather difficult to compile xscreensaver by yourself.

I have created "xscreensaver-tests" rpm, in which test-xinerama and so on
is included.

Comment 6 aten 2008-08-04 14:53:01 UTC
Jamie, 

(In reply to comment #4)
> > xscreensaver: 08:46:46:   Xinerama
> > xscreensaver: 08:46:46:   Resize-and-Rotate
> 
> This says that your X server supports the Xinerama and RANDR extensions.  This
> is good.
> 
> > xscreensaver: 08:46:46: screens in use: 1
> > xscreensaver: 08:46:46:    0/0: 2480x1050+0+0 (default)
> 
> This says that your server is claiming that you have a *single monitor* that is
> 2480x1050, instead of two monitors.  This is bad.
> 
> Please build and run the "test-xinerama" and "test-randr" programs from the
> xscreensaver-5.06/driver/ src directory, and paste the results here.

here is the output:

$ ./test-xinerama 
test-xinerama: 10:42:57: XineramaQueryExtension(dpy, ...) ==> 0, 0
test-xinerama: 10:42:57: XineramaIsActive(dpy) ==> True
test-xinerama: 10:42:57: XineramaQueryVersion(dpy, ...) ==> 1, 1
test-xinerama: 10:42:57: 2 Xinerama screens
test-xinerama: 10:42:57:   screen 0: 1680x1050+0+0
test-xinerama: 10:42:57:   screen 1: 800x600+1680+0

$ ./test-randr 
test-randr: 10:43:09: XRRQueryExtension(dpy, ...) ==> 119, 185
test-randr: 10:43:09: XRRQueryVersion(dpy, ...) ==> 1, 2

test-randr: 10:43:09: Screen 0
test-randr: 10:43:09:   Available Rotations:     0
test-randr: 10:43:09:   Current Rotation:        0
test-randr: 10:43:09:   Available Reflections:   none
test-randr: 10:43:09:   Current Reflections:     none
test-randr: 10:43:09:   + size 0: 2480 x 1050    rates: 50

test-randr: 10:43:09:   Output 0: default: connected (427)
test-randr: 10:43:09:   + CRTC 0 (427): 2480x1050+0+0


test-randr: awaiting events...
^C

I had to interrupt test-randr since it has been waiting forever and I'm not sure what are those events.

Mamoru, I appreciate the rpms.

Comment 7 Jamie Zawinski 2008-08-04 15:06:23 UTC
> test-xinerama: 10:42:57:   screen 0: 1680x1050+0+0
> test-xinerama: 10:42:57:   screen 1: 800x600+1680+0
> ...
> test-randr: 10:43:09:   Output 0: default: connected (427)
> test-randr: 10:43:09:   + CRTC 0 (427): 2480x1050+0+0

Well.  Xinerama says you have two screens, RANDR says you have one.  Since you actually do have two, I'd say this is obviously a bug in RANDR.  I thought Xinerama was now provided *by* the RANDR extension, but apparently not.  You've got two different extensions in the server providing conflicting information.  I'm listening to RANDR, because that's the more modern one, and it (normally) provides info that Xinerama does not.

So I suggest you reassign this to the RANDR maintainers.

In the meantime, you can make it work by recompiling your copy of xscreensaver --without-randr-ext.

Comment 8 aten 2008-08-05 03:12:09 UTC
> So I suggest you reassign this to the RANDR maintainers.

I would be happy to do that if someone told me how. 

> 
> In the meantime, you can make it work by recompiling your copy of xscreensaver
> --without-randr-ext.

Thanks for suggestion, I'll consider this.

Comment 9 Mamoru TASAKA 2008-08-05 03:30:02 UTC
Once changing the component to libXrandr. xgl maintainer, would you help?

Comment 10 Bill Crawford 2008-08-06 18:00:32 UTC
In case noone noticed, this appears to be the nvidia binary driver, so I'm not sure that libXrandr maintainer can do anything about it ...

Comment 11 Jamie Zawinski 2008-08-08 21:10:37 UTC
Created attachment 313848 [details]
xscreensaver nvidia bug workaround

It is still very obvious to me that this is a bug in the X server and/or the nvidia driver.  However, this patch to xscreensaver should work around it, at least in simple cases.  Can you please try this out and let me know?  This patch is against xscreensaver/driver/screens.c from the 5.06 release.

Whether it works or not, I'd like to see the -verbose output that it prints.  Thanks.

Comment 12 Jamie Zawinski 2008-08-08 21:12:28 UTC
Oh, and for the record, I got this response from nvidia.  

I find their proposed solution very silly.



From: Aaron Plattner <aplattner>
Date: August 7, 2008 10:21:25 AM PDT
To: linux-bugs

The NVIDIA X driver does not yet support RandR 1.2.  The X server has
a compatibility layer in it that allows RandR 1.2 clients to talk to
RandR 1.1 drivers through an RandR 1.2 pseudo-output called "default".
This reports the total combined resolution of the TwinView display,
since it doesn't have any visibility into TwinView metamodes.  There
is no way for the driver to prevent the server from turning on this
compatibility layer.

The intention is for X client applications to continue to use the
Xinerama extension to query the screen geometry.  RandR 1.2 reports
its own Xinerama info for this purpose.  I would recommend against
modifying xscreensaver to try to get this information from RandR.

Comment 13 Mamoru TASAKA 2008-08-09 03:38:41 UTC
xscreensaver-5.06-3.fc8 is rebuilt with the patch on comment 11 applied.
oleksandr, would you try this?

http://kojipkgs.fedoraproject.org/packages/xscreensaver/5.06/3.fc8/

Comment 14 aten 2008-08-09 05:17:15 UTC
(In reply to comment #13)
> xscreensaver-5.06-3.fc8 is rebuilt with the patch on comment 11 applied.
> oleksandr, would you try this?
> 
> http://kojipkgs.fedoraproject.org/packages/xscreensaver/5.06/3.fc8/

damn you are fast. I barely had time to read my mail and you already have the RPMs built. Thanks a bunch, that saves whole lot of time.

Long story short - my screensavers are back on the separate monitors, and the unlock dialog box appears on the right position. Everything worksa like a c

Beautiful  job Jamie, I kindly appreciate that.

here is the verbose log:

$ xscreensaver -verbose
xscreensaver 5.06, copyright (c) 1991-2008 by Jamie Zawinski <jwz>.
xscreensaver: 01:07:43: running as sashko/users (501/100)
xscreensaver: 01:07:43: in process 24125.
xscreensaver: 01:07:43: WARNING: RANDR reports 1 screen but Xinerama
xscreensaver: 01:07:43:          reports multiple.  Believing Xinerama.
xscreensaver: 01:07:43: running on display ":0.0"
xscreensaver: 01:07:43: vendor is The X.Org Foundation, 10300000.
xscreensaver: 01:07:43: useful extensions:
xscreensaver: 01:07:43:   MIT Screen-Saver (disabled at compile time)
xscreensaver: 01:07:43:   Shared Memory
xscreensaver: 01:07:43:   Double-Buffering
xscreensaver: 01:07:43:   Power Management
xscreensaver: 01:07:43:   GLX
xscreensaver: 01:07:43:   XF86 Video-Mode
xscreensaver: 01:07:43:   Xinerama
xscreensaver: 01:07:43:   Resize-and-Rotate
xscreensaver: 01:07:43: screen 0 non-colormapped depths: 0 24.
xscreensaver: 01:07:43: screens in use: 2
xscreensaver: 01:07:43:    0/0: 1680x1050+0+0
xscreensaver: 01:07:43:    1/0: 800x600+1680+0
xscreensaver: 01:07:43: selecting RANDR events
xscreensaver: 01:07:43: consulting /proc/interrupts for keyboard activity.
xscreensaver: 01:07:43: 0: visual 0x21 (TrueColor,   depth: 24, cmap: default)
xscreensaver: 01:07:43: 0: saver window is 0x600001.
xscreensaver: 01:07:43: 1: saver window is 0x600005.
xscreensaver: 01:07:43: selecting events on extant windows... done.
xscreensaver: 01:07:43: awaiting idleness.

Comment 15 Mamoru TASAKA 2008-08-09 06:21:42 UTC
Thank you all!

Again once changing back the component to xscreensaver.

Comment 16 Fedora Update System 2008-08-09 06:28:27 UTC
xscreensaver-5.06-3.fc9 has been submitted as an update for Fedora 9

Comment 17 Fedora Update System 2008-08-09 06:30:25 UTC
xscreensaver-5.06-3.fc8 has been submitted as an update for Fedora 8

Comment 18 Fedora Update System 2008-08-12 18:22:51 UTC
xscreensaver-5.06-3.fc9 has been pushed to the Fedora 9 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 19 Fedora Update System 2008-08-12 18:25:57 UTC
xscreensaver-5.06-3.fc8 has been pushed to the Fedora 8 stable repository.  If problems still persist, please make note of it in this bug report.