summaryrefslogtreecommitdiff
authoralwin <alwin>2005-03-21 22:35:12 (UTC)
committer alwin <alwin>2005-03-21 22:35:12 (UTC)
commit16ddf84003a9eaa5e56de00287e01d9a09fd864a (patch) (unidiff)
tree54c7c512d975904ed1026026a0fb35df795cfe47
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 (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,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
38namespace Opie { 38namespace Opie {
39namespace Core { 39namespace 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 */
48class OAbstractMobileDevice : public ODevice { 48class OAbstractMobileDevice : public ODevice {
49 Q_OBJECT 49 Q_OBJECT
50protected: 50protected:
51 OAbstractMobileDevice(); 51 OAbstractMobileDevice();
52 void setAPMTimeOut( int time ); 52 void setAPMTimeOut( int time );
53public: 53public:
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}
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
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
@@ -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
131struct z_button { 132struct 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;