summaryrefslogtreecommitdiff
authorerik <erik>2007-02-13 21:52:06 (UTC)
committer erik <erik>2007-02-13 21:52:06 (UTC)
commit45f2e4cdc6e185439ef4bde6e2b8181a4decd032 (patch) (side-by-side diff)
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)
switch ( d->m_model )
{
case Model_Palm_LD:
case Model_Palm_TX:
case Model_Palm_Z72:
m_backlightdev = "/sys/class/backlight/pxapwm-bl/";
d->m_rotation = Rot0;
d->m_direction = CCW;
d->m_qteDriver = "Transformed";
break;
default:
m_backlightdev = "";
}
}
void Palm::initButtons()
{
if ( d->m_buttons )
return ;
if ( isQWS( ) ) {
addPreHandler(this);
}
d->m_buttons = new QValueList <ODeviceButton>;
for ( uint i = 0; i < ( sizeof( palm_buttons ) / sizeof( palm_button ) ); i++ )
{
palm_button *ib = palm_buttons + i;
ODeviceButton b;
if (( ib->model & d->m_model ) == d->m_model ) {
b. setKeycode ( ib->code );
b. setUserText ( QObject::tr ( "Button", ib->utext ));
b. setPixmap ( OResource::loadPixmap ( ib->pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction ));
d->m_buttons->append ( b );
}
}
reloadButtonMapping();
}
bool Palm::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
{
int newkeycode = keycode;
if (qt_screen->transformOrientation() != Rot0){
switch ( keycode ) {
case Key_Left :
case Key_Right:
case Key_Up :
case Key_Down :
newkeycode = Key_Left + ( keycode - Key_Left + (int) qt_screen->transformOrientation() ) % 4;
default:
break;
}
-
+
if (newkeycode!=keycode) {
if ( newkeycode != Key_unknown ) {
QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );
}
return true;
}
}
-
+
return false;
}
bool Palm::suspend()
{
// some Palms do not implement their own power management at the moment.
bool res = false;
if ( !isQWS( ) ) // only qwsserver is allowed to suspend
return false;
switch ( d->m_model ) {
case Model_Palm_LD:
case Model_Palm_Z72:
{
QCopChannel::send( "QPE/System", "aboutToSuspend()" );
::sync(); // flush fs caches
res = ( ::system ( "apm --suspend" ) == 0 );
QCopChannel::send( "QPE/System", "returnFromSuspend()" );
}
break;
default:
break;
}
return res;
}
int Palm::displayBrightnessResolution() const
{
int res = 1;
+ int fd = -1;
switch ( d->m_model )
{
case Model_Palm_LD:
case Model_Palm_TX:
case Model_Palm_Z72:
- int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
- if ( fd )
+ fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
+ if ( fd != -1)
{
char buf[100];
- if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
+ if ( ::read( fd, &buf[0], sizeof buf ) > 0 )
+ ::sscanf( &buf[0], "%d", &res );
::close( fd );
}
break;
default:
res = 1;
}
-
+
return res;
}
bool Palm::setDisplayBrightness( int bright )
{
bool res = false;
if ( bright > 255 ) bright = 255;
if ( bright < 0 ) bright = 0;
int numberOfSteps = displayBrightnessResolution();
int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
+ int fd = -1;
switch ( d->m_model )
{
case Model_Palm_LD:
case Model_Palm_TX:
case Model_Palm_Z72:
- int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
- if ( fd )
+ fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
+ if ( fd != -1 )
{
char buf[100];
int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
res = ( ::write( fd, &buf[0], len ) == 0 );
::close( fd );
}
break;
-
- default: res = false;
+
+ default:
+ res = false;
}
return res;
}