GNOME Bugzilla – Bug 354663
lock dialog not visible when using nvidia clone
Last modified: 2010-01-31 23:50:27 UTC
Please describe the problem: On my x86_64 machine running FC5,with nVidia proprietary driver in Clone mode, the lock dialog is not properly displayed. I can type "blind" the unlock password, and the screen restores properly. I had been running xscreensaver, and switched to gnome-screensaver. xscreensaver's lock dialog was restored correctly. Steps to reproduce: 1. on my laptop, x86_64 FC5, g-s 2.14.3, run "gnome-screensaver --debug --no-daemon" 2. lock the display using the gnome panel lock icon (or wait) 3. when s/s appears, try hitting shift key or moving mouse Actual results: screensaver stops moving, remains as is, but dialog is not popped up (on either Twinview screen). Can type unlock password and the screensaver unlocks and restores screen Expected results: see dialog box (as happens on other FC5 machines I have running same code, but they aren't x86_64 or Twinview) Does this happen every time? Yes Other information: Debug log during a run where the dialog is not shown, but the above steps are carried out: gnome-screensaver 2.14.3 [david@manatee madwifi-ng]$ gnome-screensaver --debug --no-daemon [gs_debug_init] gs-debug.c:95 (13:24:20): Debugging enabled [main] gnome-screensaver.c:87 (13:24:20): initializing gnome-screensaver 2.14.3 [initialize_server_extensions] gs-watcher-x11.c:1056 (13:24:21): Not using server's MIT-SCREEN-SAVER extension. [gs_watcher_set_active] gs-watcher-x11.c:774 (13:24:21): turning watcher: ON [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:21): Activity detected: resetting timers [add_idle_timer] gs-watcher-x11.c:477 (13:24:21): starting idle_timer (590000, 9) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:21): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:21): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_set_active_internal] gs-watcher-x11.c:761 (13:24:21): Starting idle watcher [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:22): Idle 1 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:22): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:23): Idle 2 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:23): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:24): Idle 3 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:24): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:25): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:25): killing idle_timer (600000, 9) [add_idle_timer] gs-watcher-x11.c:477 (13:24:25): starting idle_timer (590000, 13) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:25): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:25): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:26): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:26): killing idle_timer (600000, 13) [add_idle_timer] gs-watcher-x11.c:477 (13:24:26): starting idle_timer (590000, 14) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:26): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:26): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:27): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:27): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:28): Idle 1 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:28): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:29): Idle 2 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:29): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:30): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:30): killing idle_timer (600000, 14) [add_idle_timer] gs-watcher-x11.c:477 (13:24:30): starting idle_timer (590000, 15) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:30): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:30): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:31): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:31): killing idle_timer (600000, 15) [add_idle_timer] gs-watcher-x11.c:477 (13:24:31): starting idle_timer (590000, 16) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:31): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:31): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:32): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:32): killing idle_timer (600000, 16) [add_idle_timer] gs-watcher-x11.c:477 (13:24:32): starting idle_timer (590000, 17) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:32): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:32): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:33): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:33): killing idle_timer (600000, 17) [add_idle_timer] gs-watcher-x11.c:477 (13:24:33): starting idle_timer (590000, 18) [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:33): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:33): killing idle_timer (600000, 18) [add_idle_timer] gs-watcher-x11.c:477 (13:24:33): starting idle_timer (590000, 19) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:33): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:33): checking wall clock for hibernation, changed: 0:00:01 [gs_manager_set_lock_active] gs-manager.c:366 (13:24:33): Setting lock active: 1 [gs_grab_get_keyboard] gs-grab-x11.c:166 (13:24:33): Grabbing keyboard widget=A1 [gs_grab_get_mouse] gs-grab-x11.c:192 (13:24:33): Grabbing mouse widget=A1 [gs_manager_activate] gs-manager.c:1323 (13:24:33): fading out [fade_done_cb] gs-manager.c:1279 (13:24:33): fade completed, showing windows[window_map_cb] gs-manager.c:1039 (13:24:33): Handling window map event [gs_window_clear] gs-window-x11.c:254 (13:24:33): Clearing window [clear_all_children] gs-window-x11.c:229 (13:24:33): Clearing all child windows [window_show_cb] gs-manager.c:1091 (13:24:33): Handling window show [window_map_cb] gs-manager.c:1039 (13:24:33): Handling window map event [gs_window_clear] gs-window-x11.c:254 (13:24:33): Clearing window [clear_all_children] gs-window-x11.c:229 (13:24:33): Clearing all child windows [window_show_cb] gs-manager.c:1091 (13:24:33): Handling window show [gs_watcher_set_active] gs-watcher-x11.c:774 (13:24:33): turning watcher: OFF [remove_idle_timer] gs-watcher-x11.c:464 (13:24:33): killing idle_timer (600000, 19) [_gs_watcher_set_active_internal] gs-watcher-x11.c:757 (13:24:34): Stopping idle watcher [gs_listener_send_signal_active_changed] gs-listener-dbus.c:162 (13:24:34): Sending the ActiveChanged(TRUE) signal on the session bus [gs_manager_set_lock_active] gs-manager.c:366 (13:24:34): Setting lock active: 1 [gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[window_map_event_cb] gs-manager.c:1026 (13:24:34): Handling window map_event event [gs_grab_move_keyboard] gs-grab-x11.c:328 (13:24:34): Moving keyboard grab from A1 to 2600006 [gs_grab_move_keyboard] gs-grab-x11.c:335 (13:24:34): *** doing X server grab[gs_grab_release_keyboard] gs-grab-x11.c:218 (13:24:34): Ungrabbing keyboard [gs_grab_get_keyboard] gs-grab-x11.c:166 (13:24:34): Grabbing keyboard widget=2600006 [gs_grab_move_keyboard] gs-grab-x11.c:357 (13:24:34): *** releasing X server grab [gs_grab_move_mouse] gs-grab-x11.c:274 (13:24:34): Moving pointer grab from A1 to 2600006 [gs_grab_move_mouse] gs-grab-x11.c:281 (13:24:34): *** doing X server grab[gs_grab_release_mouse] gs-grab-x11.c:236 (13:24:34): Ungrabbing pointer [gs_grab_get_mouse] gs-grab-x11.c:192 (13:24:34): Grabbing mouse widget=2600006 [gs_grab_move_mouse] gs-grab-x11.c:304 (13:24:34): *** releasing X server grab [manager_maybe_start_job_for_window] gs-manager.c:190 (13:24:34): Starting job for window [gs_job_start] gs-job.c:758 (13:24:34): starting job [nice_process] gs-job.c:555 (13:24:34): Setting child process priority to: 10 [gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[window_map_event_cb] gs-manager.c:1026 (13:24:34): Handling window map_event event [gs_grab_move_keyboard] gs-grab-x11.c:321 (13:24:34): Window 2600006 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:262 (13:24:34): Window 2600006 is already grabbed, skipping [manager_maybe_start_job_for_window] gs-manager.c:196 (13:24:34): Not starting job because job is running [gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[window_map_event_cb] gs-manager.c:1026 (13:24:34): Handling window map_event event [manager_maybe_start_job_for_window] gs-manager.c:190 (13:24:34): Starting job for window [gs_job_start] gs-job.c:758 (13:24:34): starting job [nice_process] gs-job.c:555 (13:24:34): Setting child process priority to: 10 [gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:34): not raising our windows[window_map_event_cb] gs-manager.c:1026 (13:24:34): Handling window map_event event [manager_maybe_start_job_for_window] gs-manager.c:196 (13:24:34): Not starting job because job is running [window_obscured_cb] gs-manager.c:1126 (13:24:34): Handling window obscured: obscured [gs_job_stop] gs-job.c:814 (13:24:34): stopping job [gs_job_died] gs-job.c:434 (13:24:34): Waiting on process 31079 [gs_job_died] gs-job.c:448 (13:24:34): Job died [unfade_idle] gs-manager.c:998 (13:24:34): resetting fade [gs_fade_reset] gs-fade.c:640 (13:24:34): Resetting fade [gs_window_xevent] gs-window-x11.c:472 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:472 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:472 (13:24:34): not raising our windows[gs_window_xevent] gs-window-x11.c:472 (13:24:34): not raising our windows[find_window_at_pointer] gs-manager.c:949 (13:24:37): Requesting unlock for screen 0 [gs_window_request_unlock] gs-window-x11.c:1019 (13:24:37): Requesting unlock [window_dialog_up_cb] gs-manager.c:866 (13:24:37): Handling dialog up [gs_grab_move_keyboard] gs-grab-x11.c:321 (13:24:37): Window 2600006 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:262 (13:24:37): Window 2600006 is already grabbed, skipping [gs_grab_release_mouse] gs-grab-x11.c:236 (13:24:37): Ungrabbing pointer [window_dialog_up_cb] gs-manager.c:886 (13:24:37): Suspending jobs [gs_job_suspend] gs-job.c:842 (13:24:37): suspending job [gs_job_suspend] gs-job.c:842 (13:24:37): suspending job [popup_dialog_idle] gs-window-x11.c:979 (13:24:37): Popping up dialog [gs_window_clear] gs-window-x11.c:254 (13:24:37): Clearing window [clear_all_children] gs-window-x11.c:229 (13:24:37): Clearing all child windows [command_watch] gs-window-x11.c:882 (13:24:39): command output: WINDOW ID=62914563 [gs_window_xevent] gs-window-x11.c:460 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:472 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:472 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:39): not raising our windows[gs_window_xevent] gs-window-x11.c:460 (13:24:39): not raising our windows[command_watch] gs-window-x11.c:882 (13:24:42): command output: RESPONSE=OK [gs_window_dialog_finish] gs-window-x11.c:815 (13:24:42): Dialog finished[gs_window_clear] gs-window-x11.c:254 (13:24:43): Clearing window [clear_all_children] gs-window-x11.c:229 (13:24:43): Clearing all child windows [gs_grab_move_keyboard] gs-grab-x11.c:321 (13:24:43): Window 2600006 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:277 (13:24:43): Getting pointer grab on 2600006 [gs_grab_move_mouse] gs-grab-x11.c:281 (13:24:43): *** doing X server grab[gs_grab_get_mouse] gs-grab-x11.c:192 (13:24:43): Grabbing mouse widget=2600006 [gs_grab_move_mouse] gs-grab-x11.c:304 (13:24:43): *** releasing X server grab [manager_maybe_start_job_for_window] gs-manager.c:193 (13:24:43): Window is obscured deferring start of job [gs_job_suspend] gs-job.c:842 (13:24:43): suspending job [gs_grab_release_keyboard_and_mouse] gs-grab-x11.c:384 (13:24:43): Releasing all grabs [gs_grab_release_mouse] gs-grab-x11.c:236 (13:24:43): Ungrabbing pointer [gs_grab_release_keyboard] gs-grab-x11.c:218 (13:24:43): Ungrabbing keyboard [gs_job_stop] gs-job.c:814 (13:24:43): stopping job [gs_job_stop] gs-job.c:814 (13:24:43): stopping job [gs_job_died] gs-job.c:434 (13:24:43): Waiting on process 31080 [gs_job_died] gs-job.c:448 (13:24:43): Job died [window_unmap_cb] gs-manager.c:1046 (13:24:43): window unmapped! [gs_window_dialog_finish] gs-window-x11.c:815 (13:24:43): Dialog finished[window_unmap_cb] gs-manager.c:1046 (13:24:43): window unmapped! [gs_window_dialog_finish] gs-window-x11.c:815 (13:24:43): Dialog finished[gs_watcher_set_active] gs-watcher-x11.c:774 (13:24:43): turning watcher: ON [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:43): Activity detected: resetting timers [add_idle_timer] gs-watcher-x11.c:477 (13:24:43): starting idle_timer (590000, 52) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:43): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:43): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_set_active_internal] gs-watcher-x11.c:761 (13:24:43): Starting idle watcher [gs_listener_send_signal_active_changed] gs-listener-dbus.c:162 (13:24:43): Sending the ActiveChanged(FALSE) signal on the session bus [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:43): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:43): killing idle_timer (600000, 52) [add_idle_timer] gs-watcher-x11.c:477 (13:24:43): starting idle_timer (590000, 54) [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:43): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:43): killing idle_timer (600000, 54) [add_idle_timer] gs-watcher-x11.c:477 (13:24:43): starting idle_timer (590000, 55) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:44): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:44): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:45): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:45): killing idle_timer (600000, 55) [add_idle_timer] gs-watcher-x11.c:477 (13:24:45): starting idle_timer (590000, 56) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:45): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:45): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:46): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:46): killing idle_timer (600000, 56) [add_idle_timer] gs-watcher-x11.c:477 (13:24:46): starting idle_timer (590000, 57) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:46): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:46): checking wall clock for hibernation, changed: 0:00:01 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:47): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:47): killing idle_timer (600000, 57) [add_idle_timer] gs-watcher-x11.c:477 (13:24:47): starting idle_timer (590000, 58) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:47): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:47): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:48): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:48): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:49): Idle 1 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:49): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:49): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:49): killing idle_timer (600000, 58) [add_idle_timer] gs-watcher-x11.c:477 (13:24:49): starting idle_timer (590000, 59) [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:49): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:49): killing idle_timer (600000, 59) [add_idle_timer] gs-watcher-x11.c:477 (13:24:49): starting idle_timer (590000, 60) [_gs_watcher_notice_activity] gs-watcher-x11.c:569 (13:24:50): Activity detected: resetting timers [remove_idle_timer] gs-watcher-x11.c:464 (13:24:50): killing idle_timer (600000, 60) [add_idle_timer] gs-watcher-x11.c:477 (13:24:50): starting idle_timer (590000, 61) [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:50): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:50): checking wall clock for hibernation, changed: 0:00:00 [_gs_watcher_check_pointer_position] gs-watcher-x11.c:1407 (13:24:51): Idle 0 seconds [check_for_clock_skew] gs-watcher-x11.c:1327 (13:24:51): checking wall clock for hibernation, changed: 0:00:01
One really strange thing here is that gdk thinks that one of the two g-s windows (one per monitor) is completely obscured (not visible). The dialog may be displayed on that window. What does your nvidia "Device" section of xorg.conf look like? I've tested the normal twinview mode but not clone mode.
My xorg.conf looks like (note that my primary Monitor is the DFP) Section "Device" Identifier "Videocard0" Driver "nvidia" VendorName "Videocard vendor" BoardName "NVIDIA GeForce 4 (generic)" Option "DPMS" Option "UseEdidFreqs" Option "TwinView" "On" Option "MetaModes" "1024x768@1920x1200, 1920x1200; 1024x768@1600x1200, 1600x1200; 1024x768@1400x1050, 1400x1050; 1024x768@1280x1024, 1280x1024; 1024x768,1024x768; 800x600,800x600" Option "TwinViewOrientation" "Clone" Option "SecondMonitorHorizSync" "30-90'" Option "SecondMonitorVertRefresh" "57-70" Option "HWcursor" Option "CursorShadow" Option "CursorShadowAlpha" "32" Option "CursorShadowXOffset" "3" Option "CursorShadowYOffset" "3" Option "ConnectedMonitor" "CRT, DFP" EndSection [
OK, I was able to reproduce this with g-s HEAD using something similar to your configuration. It is what I thought. GDK is reporting that the screen has two monitors - as if it were the typical xinerama/twinview setup without using clone. I can confirm this using gtk+/tests/testxinerama. I'm not sure if I'm supposed to somehow check if the monitors are clones...
If I modify testxinerama to print to the screen, since I can't see the widget on monitor 2, and additionally print out the screen size I get: ** Message: Screen width: 1920 height: 1200 ** Message: <big><span foreground='white' background='black'>Monitor 1 of 2</span></big> <i>Width - Height </i>: (1600,1200) <i>Top left coordinate </i>: (0,0) ** Message: <big><span foreground='white' background='black'>Monitor 2 of 2</span></big> <i>Width - Height </i>: (1920,1200) <i>Top left coordinate </i>: (0,0)
And without clone on (typical twinview): ** Message: Screen width: 3520 height: 1200 ** Message: <big><span foreground='white' background='black'>Monitor 1 of 2</span></big> <i>Width - Height </i>: (1600,1200) <i>Top left coordinate </i>: (0,0) ** Message: <big><span foreground='white' background='black'>Monitor 2 of 2</span></big> <i>Width - Height </i>: (1920,1200) <i>Top left coordinate </i>: (1600,0)
OK, I tried fiddling with the xorg.conf file options for the NVIDIA driver. I can make it work correctly by suppressing the Xinerama emulation, using the option "NoTwinViewXineramaInfo" as below. But I still think it is a bug: since the two screens "overlap" in their origin, shouldn't that be what works when Xinerama says the two screens overlap? Section "Device" Identifier "Videocard0" Driver "nvidia" VendorName "Videocard vendor" BoardName "NVIDIA GeForce 4 (generic)" Option "DPMS" Option "UseEdidFreqs" Option "TwinView" "On" Option "MetaModes" "1024x768@1920x1200, 1920x1200; 1024x768@1600x1200, 1600x1200; 1024x768@1400x1050, 1400x1050; 1024x768@1280x1024, 1280x1024; 1024x768,1024x768; 800x600,800x600" Option "TwinViewOrientation" "Clone" Option "NoTwinViewXineramaInfo" "True" Option "SecondMonitorHorizSync" "30-90'" Option "SecondMonitorVertRefresh" "57-70" Option "HWcursor" Option "CursorShadow" Option "CursorShadowAlpha" "32" Option "CursorShadowXOffset" "3" Option "CursorShadowYOffset" "3" Option "ConnectedMonitor" "CRT, DFP" EndSection
this happens for me too, using the i810 modesetting driver, which provides randr 1.2. slightly contracted debug output follows. when i unlock, i can see the dialog mapped at the top of the screen, with decorations. maybe this is a metacity stacking issue in disguise? [gs_manager_create_window] gs-manager.c:1340 (15:20:46): Creating 2 windows for screen 0 [gs_manager_activate] gs-manager.c:1459 (15:20:46): fading out [fade_done_cb] gs-manager.c:1420 (15:20:47): fade completed, showing windows [window_map_cb] gs-manager.c:1179 (15:20:47): Handling window map event [gs_window_clear] gs-window-x11.c:266 (15:20:47): Clearing window [clear_all_children] gs-window-x11.c:241 (15:20:47): Clearing all child windows [window_show_cb] gs-manager.c:1228 (15:20:47): Handling window show [window_map_cb] gs-manager.c:1179 (15:20:47): Handling window map event [gs_window_clear] gs-window-x11.c:266 (15:20:47): Clearing window [clear_all_children] gs-window-x11.c:241 (15:20:47): Clearing all child windows [window_show_cb] gs-manager.c:1228 (15:20:47): Handling window show [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [window_map_event_cb] gs-manager.c:1166 (15:20:48): Handling window map_event event [manager_maybe_grab_window] gs-manager.c:1120 (15:20:48): Moving grab to 0x80b6010 [xorg_lock_smasher_set_active] gs-grab-x11.c:126 (15:20:48): Disabling the x.org grab smasher [xorg_lock_smasher_set_active] gs-grab-x11.c:146 (15:20:48): XF86MiscSetGrabKeysState(off) returned MiscExtGrabStateSuccess [gs_grab_move_keyboard] gs-grab-x11.c:333 (15:20:48): Moving keyboard grab from 71 to 2600022 [gs_grab_move_keyboard] gs-grab-x11.c:340 (15:20:48): *** doing X server grab [gs_grab_release_keyboard] gs-grab-x11.c:221 (15:20:48): Ungrabbing keyboard [gs_grab_get_keyboard] gs-grab-x11.c:166 (15:20:48): Grabbing keyboard widget=2600022 [gs_grab_move_keyboard] gs-grab-x11.c:362 (15:20:48): *** releasing X server grab [gs_grab_move_mouse] gs-grab-x11.c:278 (15:20:48): Moving pointer grab from 71 to 2600022 [gs_grab_move_mouse] gs-grab-x11.c:285 (15:20:48): *** doing X server grab [gs_grab_release_mouse] gs-grab-x11.c:239 (15:20:48): Ungrabbing pointer [gs_grab_get_mouse] gs-grab-x11.c:195 (15:20:48): Grabbing mouse widget=2600022 [gs_grab_move_mouse] gs-grab-x11.c:308 (15:20:48): *** releasing X server grab [manager_maybe_start_job_for_window] gs-manager.c:198 (15:20:48): Starting job for window [gs_job_start] gs-job.c:427 (15:20:48): starting job [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [window_map_event_cb] gs-manager.c:1166 (15:20:48): Handling window map_event event [manager_maybe_grab_window] gs-manager.c:1120 (15:20:48): Moving grab to 0x80b6010 [xorg_lock_smasher_set_active] gs-grab-x11.c:126 (15:20:48): Disabling the x.org grab smasher [xorg_lock_smasher_set_active] gs-grab-x11.c:146 (15:20:48): XF86MiscSetGrabKeysState(off) returned MiscExtGrabStateAlready [gs_grab_move_keyboard] gs-grab-x11.c:326 (15:20:48): Window 2600022 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:266 (15:20:48): Window 2600022 is already grabbed, skipping [manager_maybe_start_job_for_window] gs-manager.c:198 (15:20:48): Starting job for window [gs_job_start] gs-job.c:427 (15:20:48): starting job [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [window_map_event_cb] gs-manager.c:1166 (15:20:48): Handling window map_event event [manager_maybe_start_job_for_window] gs-manager.c:198 (15:20:48): Starting job for window [gs_job_start] gs-job.c:427 (15:20:48): starting job [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:48): not raising our windows [window_map_event_cb] gs-manager.c:1166 (15:20:48): Handling window map_event event [manager_maybe_start_job_for_window] gs-manager.c:198 (15:20:48): Starting job for window [gs_job_start] gs-job.c:427 (15:20:48): starting job [window_obscured_cb] gs-manager.c:1252 (15:20:48): Handling window obscured: obscured [gs_job_stop] gs-job.c:474 (15:20:48): stopping job [gs_job_stop] gs-job.c:477 (15:20:48): Could not stop job: pid not defined [unfade_idle] gs-manager.c:1147 (15:20:48): resetting fade [gs_fade_reset] gs-fade.c:632 (15:20:48): Resetting fade [find_window_at_pointer] gs-manager.c:1096 (15:20:49): Requesting unlock for screen 0 [gs_window_request_unlock] gs-window-x11.c:1446 (15:20:49): Requesting unlock [window_dialog_up_cb] gs-manager.c:1005 (15:20:49): Handling dialog up [xorg_lock_smasher_set_active] gs-grab-x11.c:126 (15:20:49): Disabling the x.org grab smasher [xorg_lock_smasher_set_active] gs-grab-x11.c:146 (15:20:49): XF86MiscSetGrabKeysState(off) returned MiscExtGrabStateAlready [gs_grab_move_keyboard] gs-grab-x11.c:326 (15:20:49): Window 2600022 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:266 (15:20:49): Window 2600022 is already grabbed, skipping [gs_grab_release_mouse] gs-grab-x11.c:239 (15:20:49): Ungrabbing pointer [window_dialog_up_cb] gs-manager.c:1028 (15:20:49): Suspending jobs [gs_job_suspend] gs-job.c:503 (15:20:49): suspending job [gs_job_suspend] gs-job.c:503 (15:20:49): suspending job [popup_dialog_idle] gs-window-x11.c:1402 (15:20:49): Popping up dialog [gs_window_clear] gs-window-x11.c:266 (15:20:49): Clearing window [clear_all_children] gs-window-x11.c:241 (15:20:49): Clearing all child windows [error_watch] gs-window-x11.c:830 (15:20:49): command error output: [gs_manager_request_unlock] gs-manager.c:1549 (15:20:49): Request unlock but dialog is already up [lock_command_watch] gs-window-x11.c:1306 (15:20:49): command output: WINDOW ID=48234499 [gs_window_xevent] gs-window-x11.c:631 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:643 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:643 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:49): not raising our windows [gs_window_xevent] gs-window-x11.c:631 (15:20:49): not raising our windows [error_watch] gs-window-x11.c:830 (15:20:49): command error output: [auth_message_handler] gnome-screensaver-dialog.c:215 (15:20:49): Got message style 1: 'Password: ' [error_watch] gs-window-x11.c:830 (15:20:49): command error output: [gs_lock_plug_show_prompt] gs-lock-plug.c:870 (15:20:49): Setting prompt to: Password: [error_watch] gs-window-x11.c:830 (15:20:50): command error output: [request_response] gnome-screensaver-dialog.c:144 (15:20:50): got response: -2 [error_watch] gs-window-x11.c:830 (15:20:50): command error output: [do_auth_check] gnome-screensaver-dialog.c:283 (15:20:50): Verify user returned: TRUE [lock_command_watch] gs-window-x11.c:1306 (15:20:50): command output: RESPONSE=OK [gs_window_dialog_finish] gs-window-x11.c:1225 (15:20:50): Dialog finished [keyboard_command_finish] gs-window-x11.c:1092 (15:20:50): Keyboard finished [gs_window_clear] gs-window-x11.c:266 (15:20:50): Clearing window [clear_all_children] gs-window-x11.c:241 (15:20:50): Clearing all child windows [window_dialog_down_cb] gs-manager.c:1043 (15:20:50): Handling dialog down [xorg_lock_smasher_set_active] gs-grab-x11.c:126 (15:20:50): Disabling the x.org grab smasher [xorg_lock_smasher_set_active] gs-grab-x11.c:146 (15:20:50): XF86MiscSetGrabKeysState(off) returned MiscExtGrabStateAlready [gs_grab_move_keyboard] gs-grab-x11.c:326 (15:20:50): Window 2600022 is already grabbed, skipping [gs_grab_move_mouse] gs-grab-x11.c:281 (15:20:50): Getting pointer grab on 2600022 [gs_grab_move_mouse] gs-grab-x11.c:285 (15:20:50): *** doing X server grab [gs_grab_get_mouse] gs-grab-x11.c:195 (15:20:50): Grabbing mouse widget=2600022 [gs_grab_move_mouse] gs-grab-x11.c:308 (15:20:50): *** releasing X server grab [manager_maybe_start_job_for_window] gs-manager.c:201 (15:20:50): Window is obscured deferring start of job [manager_maybe_start_job_for_window] gs-manager.c:198 (15:20:50): Starting job for window [gs_job_start] gs-job.c:427 (15:20:50): starting job
downstream bug report here: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=238961
Created attachment 88561 [details] [review] The above patch was reported to fix things The above patch subtracts out overlapping areas in the screensaver windows so that they are always disjoint and the lock dialog never gets sandwiched between two windows.
I tested this patch and it works for me too. This bug was also reported in the Debian BTS. http://bugs.debian.org/420339 Any plans to include it? It's a rather important bug now that xrandr support is enabled by default in the latest Xorg intel drivers (and that by default the 2 screen setup is a case like this). It would warrant inclusion in a 2.18.x point release IMO.
Fixed in trunk and 2.18. Thanks Ray!
*** Bug 462466 has been marked as a duplicate of this bug. ***
How Do I go about applying this patch?