debug && echo "powerstate=$powerstate"
+is_lid_open() {
+ if [ -x /usr/bin/op_lidstate -a ! -e /etc/pandora/my_lid_is_broken ]; then
+ if [ $(op_lidstate) = "0" ]; then
+ # lid is open - return true
+ return 0
+ else
+ # lid is closed - return false
+ return -1
+ fi
+ else
+ # op_lidstate program not found, report lid open
+ # this should cause less trouble
+ return 0
+ fi
+}
+
+powerstate_try_on() {
+ # if lid is open switch powerstate to "on"
+ # if lid is closed switch powerstate to "liddisplayoff"
+ # this prevents screen off lock when shoulder butttons
+ # are pressed while the lid is closed
+ if is_lid_open; then
+ powerstate="on"
+ else
+ powerstate="liddisplayoff"
+ fi
+}
+
suspend_net() {
# This is kernel 3.x only,
# but ignored since 2.6 only has lowpower anyways (no suspend)
}
display_on() {
+ # only turn on display if lid is open
+ if ! is_lid_open; then
+ if [[ "$1" != "force" ]]; then
+ return 0
+ fi
+ fi
+
echo 0 > /sys/class/graphics/fb0/blank
# only bother restoring brightness if it's 0
/usr/pandora/scripts/op_cpuspeed.sh -n $oldspeed
rm -f /tmp/oldspeed
- display_on
+ display_on force
resume_net
pidlist=$(pstree -lpA | grep pnd_run.sh | sed -ne 's/.*(\([0-9]\+\))/\1/p')
# so we reload hwclock here (WizardStan)
hwclock -u -s
- display_on
+ display_on force
resume_net
echo $led_high > /sys/class/leds/pandora\:\:power/brightness
fi
}
-resume() {
+resume() { # only called on 2.6 kernels or when charging
if [ "$powerstate" = "on" ]; then
# nothing to do
echo "resume called unexpectedly" >&2
if [[ "$1" -le 2 ]]; then # power button was pressed 1-2sec, "suspend"
if [[ "$powerstate" == "buttonlowpower" ]]; then
(debug && echo "resume") || resume
- powerstate="on"
+ powerstate_try_on
elif [[ "$powerstate" == "on" ]]; then
powerstate="buttonlowpower"
(debug && echo "suspend") || suspend_
case "$lidconfig" in
"lowpower")
(debug && echo "resume") || resume
- powerstate="on"
+ powerstate_try_on
;;
*)
(debug && echo "display_on") || display_on_with_checks
- powerstate="on"
+ powerstate_try_on
;;
esac
fi
if [[ "$1" == 0 ]]; then # deactivate screensaver
display_on_with_checks
- powerstate="on"
+ powerstate_try_on
elif [[ "$1" == 1 ]]; then # activate screensaver
display_off
echo $led_idle > /sys/class/leds/pandora\:\:power/brightness