** Description changed:
Binary package hint: gnome-power-manager
Expected:
GPM should allow my external monitor to enter DPMS suspend while the laptop
lid is closed.
Observed:
GPM doesn't allow my external monitor to suspend while the lid is closed on
the laptop. If the lid is open, it works fine.
Steps To Reproduce:
Restart Ubuntu with the laptop lid closed, log in and wait for the timeout
period. The external monitor shows the screensaver, but does not enter DPMS
suspend.
No combination of GConf options has allowed me to effectively work
around this issue. In another bug, someone wrote a perl script that
works, but only if the screensaver is enabled. I use the machine with
the screensaver both on and off. So, I started digging.
Here's some snipped GPM logs (gnome-power-manager --verbose):
(Lid down, 00:01 timeout for screensaver and dpms blanking, does not work as
expected)
- blockquote
+ 8--- snip ---8
304-TI:22:50:53 TH:0x9a788b8FI:gpm-session.c
FN:gpm_session_presence_status_changed_cb,145
305- - emitting idle-changed : (1)
306-TI:22:50:53 TH:0x9a788b8FI:gpm-idle.c
FN:gpm_idle_session_idle_changed_cb,354
307- - Received gnome session idle changed: 1
308-TI:22:50:53 TH:0x9a788b8FI:gpm-idle.c FN:gpm_idle_evaluate,187
309- - session_idle=1, idle_inhibited=0, suspend_inhibited=0, x_idle=1
310-TI:22:51:03 TH:0x9a788b8FI:gpm-idle.c FN:gpm_idle_set_mode,108
311- - Doing a state transition: blank
312-TI:22:51:28 TH:0x9a788b8FI:gpm-idle.c
FN:gpm_idle_idletime_reset_cb,391
313- - idletime reset
314-TI:22:51:28 TH:0x9a788b8FI:gpm-idle.c FN:gpm_idle_evaluate,187
315- - session_idle=1, idle_inhibited=0, suspend_inhibited=0, x_idle=0
316-TI:22:51:28 TH:0x9a788b8FI:gpm-idle.c FN:gpm_idle_set_mode,108
317- - Doing a state transition: normal
318-TI:22:51:28 TH:0x9a788b8FI:gpm-manager.c
FN:gpm_manager_idle_changed_cb,804
319: - lid is closed, so we are ignoring -NORMAL state changes
320-TI:22:51:28 TH:0x9a788b8FI:gpm-idle.c FN:gpm_idle_evaluate,192
321- - X not idle
- /blockquote
+ 8--- snip ---8
(Lid up, 00:01 timeout for screensaver and dpms blanking, works as expected)
- blockquote
+ 8--- snip ---8
TI:23:04:23 TH:0x88638b8FI:gpm-session.c
FN:gpm_session_presence_status_changed_cb,145
- - emitting idle-changed : (1)
+ - emitting idle-changed : (1)
TI:23:04:23 TH:0x88638b8FI:gpm-idle.c
FN:gpm_idle_session_idle_changed_cb,354
- - Received gnome session idle changed: 1
+ - Received gnome session idle changed: 1
TI:23:04:23 TH:0x88638b8FI:gpm-idle.c FN:gpm_idle_evaluate,187
- - session_idle=1, idle_inhibited=0, suspend_inhibited=0, x_idle=1
+ - session_idle=1, idle_inhibited=0, suspend_inhibited=0, x_idle=1
TI:23:04:33 TH:0x88638b8FI:gpm-idle.c FN:gpm_idle_set_mode,108
- - Doing a state transition: blank
+ - Doing a state transition: blank
TI:23:04:41 TH:0x88638b8FI:gpm-idle.c
FN:gpm_idle_idletime_reset_cb,391
- - idletime reset
+ - idletime reset
TI:23:04:41 TH:0x88638b8FI:gpm-idle.c FN:gpm_idle_evaluate,187
- - session_idle=1, idle_inhibited=0, suspend_inhibited=0, x_idle=0
+ - session_idle=1, idle_inhibited=0, suspend_inhibited=0, x_idle=0
TI:23:04:41 TH:0x88638b8FI:gpm-idle.c FN:gpm_idle_set_mode,108
- - Doing a state transition: normal
+ - Doing a state transition: normal
TI:23:04:41 TH:0x88638b8FI:gpm-idle.c FN:gpm_idle_evaluate,192
- - X not idle
- /blockquote
+ - X not idle
+ 8--- snip ---8
I also went digging in gpm-manager.c from GPM to figure out what that
'lid is closed...' stuff meant:
- blockquote
- /* Ignore back-to-NORMAL events when the lid is closed, as the DPMS is
-* already off, and we don't want to re-enable the screen when the user
-* moves the mouse on systems that do not support hardware blanking. */
- if (gpm_button_is_lid_closed (manager-priv-button)
- mode == GPM_IDLE_MODE_NORMAL) {
- egg_debug (lid is closed, so we are ignoring -NORMAL state
changes);
- return;
- }
- /blockquote
+ 8--- snip ---8
+ /* Ignore back-to-NORMAL events when the lid is closed, as the DPMS is
+ * already off, and we don't want to re-enable the screen when the user
+ * moves the mouse on systems that do not support hardware blanking. */
+ if (gpm_button_is_lid_closed (manager-priv-button)
+ mode == GPM_IDLE_MODE_NORMAL) {
+ egg_debug (lid is closed, so we are ignoring -NORMAL state changes);
+ return;
+ }
+ 8--- snip ---8
- ... but I haven't been able to relate it to my problem, because I don't
- want to go back to normal, I want it to blank in the first place.
+ ... but I haven't been able to relate it directly to my problem, because
+ I want it to blank in the first place. It was the only big difference