summaryrefslogtreecommitdiff
path: root/libopie2
authoralwin <alwin>2005-03-21 22:35:12 (UTC)
committer alwin <alwin>2005-03-21 22:35:12 (UTC)
commit16ddf84003a9eaa5e56de00287e01d9a09fd864a (patch) (unidiff)
tree54c7c512d975904ed1026026a0fb35df795cfe47 /libopie2
parentc941b705b5eac2d2d2e9f4e3e3879227c344a42c (diff)
downloadopie-16ddf84003a9eaa5e56de00287e01d9a09fd864a.zip
opie-16ddf84003a9eaa5e56de00287e01d9a09fd864a.tar.gz
opie-16ddf84003a9eaa5e56de00287e01d9a09fd864a.tar.bz2
on non-embedix kernel zaurii devices don't wait after suspend 'cause
apm there is synchronous. for that I had to move a variable from private to protected in abstractmobiledevice.
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_abstractmobiledevice.h44
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp27
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.h1
3 files changed, 50 insertions, 22 deletions
diff --git a/libopie2/opiecore/device/odevice_abstractmobiledevice.h b/libopie2/opiecore/device/odevice_abstractmobiledevice.h
index 9467e82..335b02f 100644
--- a/libopie2/opiecore/device/odevice_abstractmobiledevice.h
+++ b/libopie2/opiecore/device/odevice_abstractmobiledevice.h
@@ -1,30 +1,30 @@
1/* 1/*
2                 This file is part of the Opie Project 2 This file is part of the Opie Project
3              Copyright (C) 2004, 2005 Holger Hans Peter Freyther <freyther@handhelds.org> 3 Copyright (C) 2004, 2005 Holger Hans Peter Freyther <freyther@handhelds.org>
4 Copyright (C) 2004, 2005 Michael 'mickey' Lauer <mickeyl@handhelds.org> 4 Copyright (C) 2004, 2005 Michael 'mickey' Lauer <mickeyl@handhelds.org>
5 5
6 6
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9 .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10_;:, .> :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_, > . <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 12:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i, .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14- . .-<_> .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15 ._= =} : or (at your option) any later version.
16    .%`+i>       _;_. 16 .%`+i> _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17 .i_,=:_. -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19 : .. .:, . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.= = ; Library General Public License for more
23++=   -.     .`     .: details. 23++= -. .` .: details.
24 :     =  ...= . :.=- 24: = ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25-. .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26 -_. . . )=. = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27 -- :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
@@ -54,7 +54,7 @@ public:
54 virtual bool suspend(); 54 virtual bool suspend();
55 virtual bool setDisplayStatus(bool); 55 virtual bool setDisplayStatus(bool);
56 56
57private: 57protected:
58 int m_timeOut; 58 int m_timeOut;
59}; 59};
60} 60}
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index 72378ff..8aefc13 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -628,3 +628,30 @@ bool Zaurus::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress,
628 return false; 628 return false;
629} 629}
630 630
631bool Zaurus::suspend() {
632 if ( !isQWS( ) ) // only qwsserver is allowed to suspend
633 return false;
634
635 bool res = false;
636 OAbstractMobileDevice::sendSuspendmsg();
637
638 struct timeval tvs, tvn;
639 ::gettimeofday ( &tvs, 0 );
640
641 ::sync(); // flush fs caches
642 res = ( ::system ( "apm --suspend" ) == 0 );
643
644 // This is needed because some apm implementations are asynchronous and we
645 // can not be sure when exactly the device is really suspended
646 // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists.
647 // on non embedix eg. 2.6 kernel line apm is synchronous so we don't need it here.
648
649 if ( res && m_embedix) {
650 do { // wait at most 1.5 sec: either suspend didn't work or the device resumed
651 ::usleep ( 200 * 1000 );
652 ::gettimeofday ( &tvn, 0 );
653 } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < m_timeOut );
654 }
655
656 return res;
657}
diff --git a/libopie2/opiecore/device/odevice_zaurus.h b/libopie2/opiecore/device/odevice_zaurus.h
index 1fb0cd9..4548e35 100644
--- a/libopie2/opiecore/device/odevice_zaurus.h
+++ b/libopie2/opiecore/device/odevice_zaurus.h
@@ -119,6 +119,7 @@ class Zaurus : public OAbstractMobileDevice, public QWSServer::KeyboardFilter
119 119
120 virtual Transformation rotation() const; 120 virtual Transformation rotation() const;
121 virtual ODirection direction() const; 121 virtual ODirection direction() const;
122 virtual bool suspend();
122 123
123 protected: 124 protected:
124 virtual void buzzer( int snd ); 125 virtual void buzzer( int snd );