summaryrefslogtreecommitdiff
authorerik <erik>2007-02-13 21:52:06 (UTC)
committer erik <erik>2007-02-13 21:52:06 (UTC)
commit45f2e4cdc6e185439ef4bde6e2b8181a4decd032 (patch) (unidiff)
tree93af498e98728650df1d5e1e62a9711c339c65d4
parentda26f048379252aa1646d54348706c6cb3756a09 (diff)
downloadopie-45f2e4cdc6e185439ef4bde6e2b8181a4decd032.zip
opie-45f2e4cdc6e185439ef4bde6e2b8181a4decd032.tar.gz
opie-45f2e4cdc6e185439ef4bde6e2b8181a4decd032.tar.bz2
This commit fixes bug 1840. The problem is that the palm support declared
a variable inside of a case statement. When I integrated the patch for palm support I streamlined the switch. This lost the brackets that would be required to declare vars inside of switch statements. The bug slipped by because I wasn't doing arm compiles at the time. Sorry. This patch fixes it. It also slides in some corrections associated to what open and sscanf return. It should not cause any behavior change. Thanks goes to GoXbox Live for reporting the problem.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_palm.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/libopie2/opiecore/device/odevice_palm.cpp b/libopie2/opiecore/device/odevice_palm.cpp
index 399c08c..d40dfce 100644
--- a/libopie2/opiecore/device/odevice_palm.cpp
+++ b/libopie2/opiecore/device/odevice_palm.cpp
@@ -122,163 +122,167 @@ void Palm::init(const QString& cpu_info)
122 122
123 switch ( d->m_model ) 123 switch ( d->m_model )
124 { 124 {
125 case Model_Palm_LD: 125 case Model_Palm_LD:
126 case Model_Palm_TX: 126 case Model_Palm_TX:
127 case Model_Palm_Z72: 127 case Model_Palm_Z72:
128 m_backlightdev = "/sys/class/backlight/pxapwm-bl/"; 128 m_backlightdev = "/sys/class/backlight/pxapwm-bl/";
129 d->m_rotation = Rot0; 129 d->m_rotation = Rot0;
130 d->m_direction = CCW; 130 d->m_direction = CCW;
131 d->m_qteDriver = "Transformed"; 131 d->m_qteDriver = "Transformed";
132 break; 132 break;
133 default: 133 default:
134 m_backlightdev = ""; 134 m_backlightdev = "";
135 } 135 }
136 136
137} 137}
138 138
139 139
140void Palm::initButtons() 140void Palm::initButtons()
141{ 141{
142 142
143 if ( d->m_buttons ) 143 if ( d->m_buttons )
144 return ; 144 return ;
145 145
146 if ( isQWS( ) ) { 146 if ( isQWS( ) ) {
147 addPreHandler(this); 147 addPreHandler(this);
148 } 148 }
149 149
150 d->m_buttons = new QValueList <ODeviceButton>; 150 d->m_buttons = new QValueList <ODeviceButton>;
151 151
152 for ( uint i = 0; i < ( sizeof( palm_buttons ) / sizeof( palm_button ) ); i++ ) 152 for ( uint i = 0; i < ( sizeof( palm_buttons ) / sizeof( palm_button ) ); i++ )
153 { 153 {
154 palm_button *ib = palm_buttons + i; 154 palm_button *ib = palm_buttons + i;
155 ODeviceButton b; 155 ODeviceButton b;
156 156
157 if (( ib->model & d->m_model ) == d->m_model ) { 157 if (( ib->model & d->m_model ) == d->m_model ) {
158 b. setKeycode ( ib->code ); 158 b. setKeycode ( ib->code );
159 b. setUserText ( QObject::tr ( "Button", ib->utext )); 159 b. setUserText ( QObject::tr ( "Button", ib->utext ));
160 b. setPixmap ( OResource::loadPixmap ( ib->pix )); 160 b. setPixmap ( OResource::loadPixmap ( ib->pix ));
161 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction )); 161 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction ));
162 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction )); 162 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction ));
163 163
164 d->m_buttons->append ( b ); 164 d->m_buttons->append ( b );
165 } 165 }
166 } 166 }
167 reloadButtonMapping(); 167 reloadButtonMapping();
168} 168}
169 169
170 170
171bool Palm::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) 171bool Palm::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
172{ 172{
173 int newkeycode = keycode; 173 int newkeycode = keycode;
174 174
175 if (qt_screen->transformOrientation() != Rot0){ 175 if (qt_screen->transformOrientation() != Rot0){
176 176
177 switch ( keycode ) { 177 switch ( keycode ) {
178 case Key_Left : 178 case Key_Left :
179 case Key_Right: 179 case Key_Right:
180 case Key_Up : 180 case Key_Up :
181 case Key_Down : 181 case Key_Down :
182 newkeycode = Key_Left + ( keycode - Key_Left + (int) qt_screen->transformOrientation() ) % 4; 182 newkeycode = Key_Left + ( keycode - Key_Left + (int) qt_screen->transformOrientation() ) % 4;
183 default: 183 default:
184 break; 184 break;
185 } 185 }
186 186
187 if (newkeycode!=keycode) { 187 if (newkeycode!=keycode) {
188 if ( newkeycode != Key_unknown ) { 188 if ( newkeycode != Key_unknown ) {
189 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); 189 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );
190 } 190 }
191 return true; 191 return true;
192 } 192 }
193 193
194 } 194 }
195 195
196 return false; 196 return false;
197} 197}
198 198
199 199
200bool Palm::suspend() 200bool Palm::suspend()
201{ 201{
202 // some Palms do not implement their own power management at the moment. 202 // some Palms do not implement their own power management at the moment.
203 203
204 bool res = false; 204 bool res = false;
205 205
206 if ( !isQWS( ) ) // only qwsserver is allowed to suspend 206 if ( !isQWS( ) ) // only qwsserver is allowed to suspend
207 return false; 207 return false;
208 208
209 switch ( d->m_model ) { 209 switch ( d->m_model ) {
210 case Model_Palm_LD: 210 case Model_Palm_LD:
211 case Model_Palm_Z72: 211 case Model_Palm_Z72:
212 { 212 {
213 QCopChannel::send( "QPE/System", "aboutToSuspend()" ); 213 QCopChannel::send( "QPE/System", "aboutToSuspend()" );
214 214
215 ::sync(); // flush fs caches 215 ::sync(); // flush fs caches
216 res = ( ::system ( "apm --suspend" ) == 0 ); 216 res = ( ::system ( "apm --suspend" ) == 0 );
217 217
218 QCopChannel::send( "QPE/System", "returnFromSuspend()" ); 218 QCopChannel::send( "QPE/System", "returnFromSuspend()" );
219 } 219 }
220 break; 220 break;
221 default: 221 default:
222 break; 222 break;
223 } 223 }
224 224
225 return res; 225 return res;
226} 226}
227 227
228 228
229int Palm::displayBrightnessResolution() const 229int Palm::displayBrightnessResolution() const
230{ 230{
231 int res = 1; 231 int res = 1;
232 int fd = -1;
232 233
233 switch ( d->m_model ) 234 switch ( d->m_model )
234 { 235 {
235 case Model_Palm_LD: 236 case Model_Palm_LD:
236 case Model_Palm_TX: 237 case Model_Palm_TX:
237 case Model_Palm_Z72: 238 case Model_Palm_Z72:
238 int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK ); 239 fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
239 if ( fd ) 240 if ( fd != -1)
240 { 241 {
241 char buf[100]; 242 char buf[100];
242 if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res ); 243 if ( ::read( fd, &buf[0], sizeof buf ) > 0 )
244 ::sscanf( &buf[0], "%d", &res );
243 ::close( fd ); 245 ::close( fd );
244 } 246 }
245 break; 247 break;
246 248
247 default: 249 default:
248 res = 1; 250 res = 1;
249 } 251 }
250 252
251 return res; 253 return res;
252} 254}
253 255
254 256
255bool Palm::setDisplayBrightness( int bright ) 257bool Palm::setDisplayBrightness( int bright )
256{ 258{
257 bool res = false; 259 bool res = false;
258 260
259 if ( bright > 255 ) bright = 255; 261 if ( bright > 255 ) bright = 255;
260 if ( bright < 0 ) bright = 0; 262 if ( bright < 0 ) bright = 0;
261 263
262 int numberOfSteps = displayBrightnessResolution(); 264 int numberOfSteps = displayBrightnessResolution();
263 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255; 265 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
266 int fd = -1;
264 267
265 switch ( d->m_model ) 268 switch ( d->m_model )
266 { 269 {
267 270
268 case Model_Palm_LD: 271 case Model_Palm_LD:
269 case Model_Palm_TX: 272 case Model_Palm_TX:
270 case Model_Palm_Z72: 273 case Model_Palm_Z72:
271 int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK ); 274 fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
272 if ( fd ) 275 if ( fd != -1 )
273 { 276 {
274 char buf[100]; 277 char buf[100];
275 int len = ::snprintf( &buf[0], sizeof buf, "%d", val ); 278 int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
276 res = ( ::write( fd, &buf[0], len ) == 0 ); 279 res = ( ::write( fd, &buf[0], len ) == 0 );
277 ::close( fd ); 280 ::close( fd );
278 } 281 }
279 break; 282 break;
280 283
281 default: res = false; 284 default:
285 res = false;
282 } 286 }
283 return res; 287 return res;
284} 288}