author | alwin <alwin> | 2005-03-21 22:35:12 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-03-21 22:35:12 (UTC) |
commit | 16ddf84003a9eaa5e56de00287e01d9a09fd864a (patch) (unidiff) | |
tree | 54c7c512d975904ed1026026a0fb35df795cfe47 | |
parent | c941b705b5eac2d2d2e9f4e3e3879227c344a42c (diff) | |
download | opie-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.
-rw-r--r-- | libopie2/opiecore/device/odevice_abstractmobiledevice.h | 44 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice_zaurus.cpp | 27 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice_zaurus.h | 1 |
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,64 +1,64 @@ | |||
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. |
31 | */ | 31 | */ |
32 | 32 | ||
33 | #ifndef OPIE_CORE_DEVICE_ABSTRACT_MOBILE_DEVICE | 33 | #ifndef OPIE_CORE_DEVICE_ABSTRACT_MOBILE_DEVICE |
34 | #define OPIE_CORE_DEVICE_ABSTRACT_MOBILE_DEVICE | 34 | #define OPIE_CORE_DEVICE_ABSTRACT_MOBILE_DEVICE |
35 | 35 | ||
36 | #include "odevice.h" | 36 | #include "odevice.h" |
37 | 37 | ||
38 | namespace Opie { | 38 | namespace Opie { |
39 | namespace Core { | 39 | namespace Core { |
40 | /** | 40 | /** |
41 | * @short Common Implementations for Linux Handheld Devices | 41 | * @short Common Implementations for Linux Handheld Devices |
42 | * | 42 | * |
43 | * Abstract Class with implementation for suspending using | 43 | * Abstract Class with implementation for suspending using |
44 | * asynchrnonus apm implementations and displaystatus using | 44 | * asynchrnonus apm implementations and displaystatus using |
45 | * the Linux Frame Buffer API | 45 | * the Linux Frame Buffer API |
46 | * | 46 | * |
47 | */ | 47 | */ |
48 | class OAbstractMobileDevice : public ODevice { | 48 | class OAbstractMobileDevice : public ODevice { |
49 | Q_OBJECT | 49 | Q_OBJECT |
50 | protected: | 50 | protected: |
51 | OAbstractMobileDevice(); | 51 | OAbstractMobileDevice(); |
52 | void setAPMTimeOut( int time ); | 52 | void setAPMTimeOut( int time ); |
53 | public: | 53 | public: |
54 | virtual bool suspend(); | 54 | virtual bool suspend(); |
55 | virtual bool setDisplayStatus(bool); | 55 | virtual bool setDisplayStatus(bool); |
56 | 56 | ||
57 | private: | 57 | protected: |
58 | int m_timeOut; | 58 | int m_timeOut; |
59 | }; | 59 | }; |
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | #endif | 64 | #endif |
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 | |||
@@ -615,16 +615,43 @@ bool Zaurus::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, | |||
615 | if (rotation()==Rot90) { | 615 | if (rotation()==Rot90) { |
616 | newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4; | 616 | newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4; |
617 | } | 617 | } |
618 | } | 618 | } |
619 | break; | 619 | break; |
620 | 620 | ||
621 | } | 621 | } |
622 | if (newkeycode!=keycode) { | 622 | if (newkeycode!=keycode) { |
623 | if ( newkeycode != Key_unknown ) { | 623 | if ( newkeycode != Key_unknown ) { |
624 | QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); | 624 | QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); |
625 | } | 625 | } |
626 | return true; | 626 | return true; |
627 | } | 627 | } |
628 | return false; | 628 | return false; |
629 | } | 629 | } |
630 | 630 | ||
631 | bool 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 | |||
@@ -106,32 +106,33 @@ class Zaurus : public OAbstractMobileDevice, public QWSServer::KeyboardFilter | |||
106 | virtual int displayBrightnessResolution() const; | 106 | virtual int displayBrightnessResolution() const; |
107 | 107 | ||
108 | virtual void playAlarmSound(); | 108 | virtual void playAlarmSound(); |
109 | virtual void playKeySound(); | 109 | virtual void playKeySound(); |
110 | virtual void playTouchSound(); | 110 | virtual void playTouchSound(); |
111 | 111 | ||
112 | virtual QValueList <OLed> ledList() const; | 112 | virtual QValueList <OLed> ledList() const; |
113 | virtual QValueList <OLedState> ledStateList ( OLed led ) const; | 113 | virtual QValueList <OLedState> ledStateList ( OLed led ) const; |
114 | virtual OLedState ledState( OLed led ) const; | 114 | virtual OLedState ledState( OLed led ) const; |
115 | virtual bool setLedState( OLed led, OLedState st ); | 115 | virtual bool setLedState( OLed led, OLedState st ); |
116 | 116 | ||
117 | virtual bool hasHingeSensor() const; | 117 | virtual bool hasHingeSensor() const; |
118 | virtual OHingeStatus readHingeSensor() const; | 118 | virtual OHingeStatus readHingeSensor() const; |
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 ); |
125 | virtual bool filter( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); | 126 | virtual bool filter( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); |
126 | 127 | ||
127 | OLedState m_leds[1]; | 128 | OLedState m_leds[1]; |
128 | bool m_embedix; | 129 | bool m_embedix; |
129 | }; | 130 | }; |
130 | 131 | ||
131 | struct z_button { | 132 | struct z_button { |
132 | Qt::Key code; | 133 | Qt::Key code; |
133 | char *utext; | 134 | char *utext; |
134 | char *pix; | 135 | char *pix; |
135 | char *fpressedservice; | 136 | char *fpressedservice; |
136 | char *fpressedaction; | 137 | char *fpressedaction; |
137 | char *fheldservice; | 138 | char *fheldservice; |