Bug 566351
Summary: | after interrupting the fading a few times, gnome-screensaver no longer locks the screen | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Tim Taiwanese Liim <tim.liim> |
Component: | gnome-screensaver | Assignee: | jmccann |
Status: | CLOSED NEXTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | medium | Docs Contact: | |
Priority: | low | ||
Version: | 12 | CC: | cschalle, james, jmccann, rstrode |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2010-08-20 16:14:45 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: |
Description
Tim Taiwanese Liim
2010-02-18 04:02:39 UTC
I found a more consistent way to reproduce this issue. The bug is in Xorg::Xext/sync.c, which is exposed by the behavior of g-p-m. Steps to Reproduce: 1. change idle timeout to 1 minute, so it's easier to reproduce the issue. gnome-screensaver-preferences "Regard the computer as idle after" 1 minute gnome-power-preferences "Put display to sleep when inactive for" 1 minute 2. kill gnome-power-manager, and start a new one by p='idle for|idle dim|idle dim|active for' b=/usr/bin/gnome-power-manager $b --verbose | egrep "$p" 3. In F11, hit a key, idle for 35 sec, hit a key, idle for 65 sec, hit a key, idle for 65 sec, hit a key. Wait 10 minutes; g-ss will not kick in, thus issue reproduced. The delay is actually (in F11) for i in 30 60 60; do d=$i+5 idle $d sec hit a key In F12, use for i in 10 20 40 60; do d=$i+5 idle $d sec hit a key g-p-m should output something like (in F12) - resetting idle dim time to 10s - increasing idle dim time to 20s - increasing idle dim time to 40s - increasing idle dim time to 80s Here is some bash-ish mouse script (use mouse copy and paste to your terminal window) to help you get the right timing: t() { n=$1 while [ $n -gt 0 ]; do printf "$(date) $n \r" let n=$n-1 sleep 1 done printf "\n" } t1() { for d in $*; do let d1=$d+5 t $d1 done } # F11 t1 30 60 60 # F12 t1 10 20 40 60 The reason for those funny numbers (10 20 40 60 in F12): - g-p-m schedules two alarms with Xext/sync.c:IDLETIME counter: 1. for DIM event (idle for 30, 60, 120, 240, ... sec in F11; 10, 20, 40, 80, ... sec in F12) 2. for NORMAL event (when user is active, kbd or mouse). - initially g-p-m uses 10 sec (in F12) for DIM alarm; if the user undims screen immediately (within 10 sec) after dimming, the DIM time is doubled. When DIM time (120 sec in F11, 80 sec in F12) is more than 60 sec (g-ss idle time), bug566350 in Xorg::Xext/sync.c kicks in, thus no more idle events are sent to g-ss or g-p-m. - in F11 we have 30 60 60; the first two (30 60) are for doubling DIM time; the last one (60) is for g-ss timeout. - in F12 we have 10 20 40 60; the first three (10 20 40) are for doubling DIM time; the last one (60) is for g-ss timeout. Source code for doubling dim timeout in g-p-m. Note: the design and implementation of this code segment is sound; I put it here only to show the doubling behavior. gpm_backlight_notify_system_idle_changed (gpm-backlight.c) egg_debug ("we have just been idle for %lfs", elapsed); /* The user immediatly undimmed the screen! * We should double the timeout to avoid this happening again */ if (elapsed < 10) { /* double the event time */ backlight->priv->idle_dim_timeout *= 2.0; egg_debug ("increasing idle dim time to %is", backlight->priv->idle_dim_timeout); gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); } /* We reset the dimming after 2 minutes of idle, * as the user will have changed tasks */ if (elapsed > 2*60) { /* reset back to our default dimming */ backlight->priv->idle_dim_timeout = gconf_client_get_int (backlight->priv->conf, GPM_CONF_BACKLIGHT_IDLE_DIM_TIME, NULL); egg_debug ("resetting idle dim time to %is", backlight->priv->idle_dim_timeout); gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); } I'll close this bug due to lack of response from Adam (maintainer of Xorg; speaking of role reversal, usually it's the developer who is eager to close bugs; in this case, the originator sees no reason to keep bug open for no good reason). From what I experimented, I think this bug has been fixed in F13. Please reopen if you disagree. |