summaryrefslogtreecommitdiff
path: root/pm
diff options
context:
space:
mode:
authorVictor Lowther <victor.lowther@gmail.com>2010-05-31 18:28:28 -0500
committerVictor Lowther <victor.lowther@gmail.com>2010-06-05 10:39:15 -0500
commitad43a44d2f373a111c3912c4e5f65a43ab3cf65b (patch)
tree6f470f949010418266e2a2ef75d42b6e53773dcb /pm
parentb669f97fd18d6de49c6b6d6a28b77d6ecb321a5f (diff)
Make tuxonice methods chvt if using a userspace UI.
Since we do not always chvt away from X before actually hibernating, things may get nasty if both X and the userspace UI start drawing.
Diffstat (limited to 'pm')
-rwxr-xr-xpm/module.d/tuxonice32
1 files changed, 23 insertions, 9 deletions
diff --git a/pm/module.d/tuxonice b/pm/module.d/tuxonice
index 3fcc995..9764e21 100755
--- a/pm/module.d/tuxonice
+++ b/pm/module.d/tuxonice
@@ -9,15 +9,28 @@ export TUXONICE_LOC
# more locations might be nice
for loc in "/sys/power/tuxonice" "/sys/power/suspend2"; do
[ -d "${loc}" ] && { TUXONICE_LOC="${loc}"; break; }
-done
+done
+
+if [ -n $TUXONICE_LOC ]; then
+ toi_maybe_chvt() {
+ local toi_ui="$(cat "$TUXONICE_LOC/user_interface/program")"
+ local toi_ui_en="$(cat "$TUXONICE_LOC/user_interface/enabled")"
+ if [ -x "$toi_ui" ] && [ "$toi_ui_en" = 1 ] && \
+ ! state_exists console; then
+ fgconsole |savestate console
+ chvt 63
+ fi
+ }
+fi
if [ -z "$HIBERNATE_MODULE" -a -n "$TUXONICE_LOC" ] && \
[ -f "${TUXONICE_LOC}/do_hibernate" ]; then
HIBERNATE_MODULE="tuxonice"
do_hibernate()
{
- echo 5 > "${TUXONICE_LOC}/powerdown_method"
- echo anything > "${TUXONICE_LOC}/do_hibernate"
+ toi_maybe_chvt
+ echo 5 > "${TUXONICE_LOC}/powerdown_method"
+ echo anything > "${TUXONICE_LOC}/do_hibernate"
}
fi
@@ -27,13 +40,14 @@ if [ -z "$SUSPEND_HYBRID_MODULE" -a -n "$TUXONICE_LOC" ] && \
SUSPEND_HYBRID_MODULE="tuxonice"
do_suspend_hybrid()
{
- r=0
- echo 3 >"${TUXONICE_LOC}/powerdown_method"
- echo anything >"${TUXONICE_LOC}/do_hibernate"
- r=$?
- [ -f /sys/power/tuxonice/did_suspend_to_both ] && \
+ toi_maybe_chvt
+ r=0
+ echo 3 >"${TUXONICE_LOC}/powerdown_method"
+ echo anything >"${TUXONICE_LOC}/do_hibernate"
+ r=$?
+ [ -f /sys/power/tuxonice/did_suspend_to_both ] && \
[ "$(cat /sys/power/tuxonice/did_suspend_to_both)" != "1" ] && \
REVERSE="thaw"
- return $r
+ return $r
}
fi