author | mickeyl <mickeyl> | 2004-01-08 23:22:51 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-01-08 23:22:51 (UTC) |
commit | 9fc7d401f1445c5f3d3d74e173dea6de2ea4784a (patch) (unidiff) | |
tree | 2c5576c866e8e90a8e5e5efe53e1a5955156b6a5 /core | |
parent | b52dbdb9e992bd891d69601a6425086099e2ea04 (diff) | |
download | opie-9fc7d401f1445c5f3d3d74e173dea6de2ea4784a.zip opie-9fc7d401f1445c5f3d3d74e173dea6de2ea4784a.tar.gz opie-9fc7d401f1445c5f3d3d74e173dea6de2ea4784a.tar.bz2 |
turn on the light after opening the hinge when 'display off' is configured as hinge action
NOTE: I think there's a bug in the Embedix kernel which either tells a wrong hinge value after suspend
or sends out a double (bogus) keycode event on closing the hinge.
How to reproduce:
1.) Configure "suspend" as closeHingeAction
2.) Close Display --> Device Suspends
3.) Open Display --> Device does nothing (needs a kernel patch to wake up automatically, but that's another story)
4.) Wakeup Device --> Device sends F14 to rotateApplet, rotateApplet reads hinge code... it's CLOSED(!) - which is wrong
5.) Device resuspends.
6.) Wakeup again --> Device sends F14 (huh, again?) to rotateApplet. rotateApplet reads hinge code... it's OPEN now - which is ok.
Ideas?
-rw-r--r-- | core/applets/rotateapplet/rotate.cpp | 27 | ||||
-rw-r--r-- | core/applets/rotateapplet/rotate.h | 4 |
2 files changed, 24 insertions, 7 deletions
diff --git a/core/applets/rotateapplet/rotate.cpp b/core/applets/rotateapplet/rotate.cpp index 79098d4..d8081a6 100644 --- a/core/applets/rotateapplet/rotate.cpp +++ b/core/applets/rotateapplet/rotate.cpp | |||
@@ -40,2 +40,3 @@ | |||
40 | #include <qpe/resource.h> | 40 | #include <qpe/resource.h> |
41 | using namespace Opie; | ||
41 | 42 | ||
@@ -45,3 +46,3 @@ | |||
45 | 46 | ||
46 | using namespace Opie; | 47 | #include <time.h> |
47 | 48 | ||
@@ -71,9 +72,16 @@ void RotateApplet::channelReceived( const QCString &msg, const QByteArray & data | |||
71 | { | 72 | { |
73 | struct timespec interval; | ||
74 | struct timespec remain; | ||
75 | interval.tv_sec = 0; | ||
76 | interval.tv_nsec = 600; | ||
77 | ::nanosleep( &interval, &remain ); | ||
72 | OHingeStatus status = ODevice::inst()->readHingeSensor(); | 78 | OHingeStatus status = ODevice::inst()->readHingeSensor(); |
73 | qDebug( "RotateApplet::readHingeSensor = %d", (int) status ); | 79 | qDebug( "RotateApplet::readHingeSensor = %d", (int) status ); |
80 | |||
81 | Config cfg( "apm" ); | ||
82 | cfg.setGroup( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ? "AC" : "Battery" ); | ||
83 | int action = cfg.readNumEntry( "CloseHingeAction", 0 ); | ||
84 | |||
74 | if ( status == CASE_CLOSED ) | 85 | if ( status == CASE_CLOSED ) |
75 | { | 86 | { |
76 | Config cfg( "apm" ); | ||
77 | cfg.setGroup( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ? "AC" : "Battery" ); | ||
78 | int action = cfg.readNumEntry( "CloseHingeAction", 0 ); | ||
79 | switch ( action ) | 87 | switch ( action ) |
@@ -84,4 +92,13 @@ void RotateApplet::channelReceived( const QCString &msg, const QByteArray & data | |||
84 | } | 92 | } |
85 | qDebug( "RotateApplet::switchAction %d performed.", cfg.readNumEntry( "CloseHingeAction", 0 ) ); | ||
86 | } | 93 | } |
94 | else /* status != CASE_CLOSED */ | ||
95 | { | ||
96 | switch ( action ) | ||
97 | { | ||
98 | case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 127 ); break; | ||
99 | case 2: /* SUSPEND */ /* How to wake up the device from kernel? */; break; | ||
100 | default: /* IGNORE */ break; | ||
101 | } | ||
102 | } | ||
103 | qDebug( "RotateApplet::switchAction %d performed.", cfg.readNumEntry( "CloseHingeAction", 0 ) ); | ||
87 | } | 104 | } |
diff --git a/core/applets/rotateapplet/rotate.h b/core/applets/rotateapplet/rotate.h index 572b82a..4403c7d 100644 --- a/core/applets/rotateapplet/rotate.h +++ b/core/applets/rotateapplet/rotate.h | |||
@@ -59,4 +59,4 @@ public: | |||
59 | virtual QPopupMenu *popup ( QWidget *parent ) const; | 59 | virtual QPopupMenu *popup ( QWidget *parent ) const; |
60 | virtual void activated ( ); | 60 | virtual void activated ( ); |
61 | virtual void rotateDefault ( ); | 61 | virtual void rotateDefault ( ); |
62 | 62 | ||