summaryrefslogtreecommitdiff
path: root/libopie2
Unidiff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index a59e799..7377965 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -495,58 +495,71 @@ bool Zaurus::suspend()
495 ODevice::sendSuspendmsg(); 495 ODevice::sendSuspendmsg();
496 496
497 struct timeval tvs, tvn; 497 struct timeval tvs, tvn;
498 ::gettimeofday ( &tvs, 0 ); 498 ::gettimeofday ( &tvs, 0 );
499 499
500 ::sync(); // flush fs caches 500 ::sync(); // flush fs caches
501 res = ( ::system ( "apm --suspend" ) == 0 ); 501 res = ( ::system ( "apm --suspend" ) == 0 );
502 502
503 // This is needed because the apm implementation is asynchronous and we 503 // This is needed because the apm implementation is asynchronous and we
504 // can not be sure when exactly the device is really suspended 504 // can not be sure when exactly the device is really suspended
505 if ( res ) { 505 if ( res ) {
506 do { // Yes, wait 15 seconds. This APM sucks big time. 506 do { // Yes, wait 15 seconds. This APM sucks big time.
507 ::usleep ( 200 * 1000 ); 507 ::usleep ( 200 * 1000 );
508 ::gettimeofday ( &tvn, 0 ); 508 ::gettimeofday ( &tvn, 0 );
509 } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 15000 ); 509 } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 15000 );
510 } 510 }
511 511
512 QCopEnvelope ( "QPE/Rotation", "rotateDefault()" ); 512 QCopEnvelope ( "QPE/Rotation", "rotateDefault()" );
513 return res; 513 return res;
514} 514}
515 515
516 516
517Transformation Zaurus::rotation() const 517Transformation Zaurus::rotation() const
518{ 518{
519 qDebug( "Zaurus::rotation()" );
519 Transformation rot; 520 Transformation rot;
520 521
521 switch ( d->m_model ) { 522 switch ( d->m_model ) {
522 case Model_Zaurus_SLC3000: // fallthrough 523 case Model_Zaurus_SLC3000: // fallthrough
523 case Model_Zaurus_SLC7x0: { 524 case Model_Zaurus_SLC7x0:
524 OHingeStatus hs = readHingeSensor(); 525 {
526 OHingeStatus hs = readHingeSensor();
527 qDebug( "Zaurus::rotation() - hinge sensor = %d", (int) hs );
528
529 if ( m_embedix )
530 {
525 if ( hs == CASE_PORTRAIT ) rot = Rot0; 531 if ( hs == CASE_PORTRAIT ) rot = Rot0;
526 else if ( hs == CASE_UNKNOWN ) rot = Rot0; 532 else if ( hs == CASE_UNKNOWN ) rot = Rot0;
527 else rot = Rot270; 533 else rot = Rot270;
528 } 534 }
535 else
536 {
537 if ( hs == CASE_PORTRAIT ) rot = Rot270;
538 else if ( hs == CASE_UNKNOWN ) rot = Rot0;
539 else rot = Rot0;
540 }
541 }
529 break; 542 break;
530 case Model_Zaurus_SL6000: 543 case Model_Zaurus_SL6000:
531 case Model_Zaurus_SLB600: 544 case Model_Zaurus_SLB600:
532 case Model_Zaurus_SLA300: 545 case Model_Zaurus_SLA300:
533 case Model_Zaurus_SL5500: 546 case Model_Zaurus_SL5500:
534 case Model_Zaurus_SL5000: 547 case Model_Zaurus_SL5000:
535 default: 548 default:
536 rot = d->m_rotation; 549 rot = d->m_rotation;
537 break; 550 break;
538 } 551 }
539 552
540 return rot; 553 return rot;
541} 554}
542ODirection Zaurus::direction() const 555ODirection Zaurus::direction() const
543{ 556{
544 ODirection dir; 557 ODirection dir;
545 558
546 switch ( d->m_model ) { 559 switch ( d->m_model ) {
547 case Model_Zaurus_SLC3000: // fallthrough 560 case Model_Zaurus_SLC3000: // fallthrough
548 case Model_Zaurus_SLC7x0: { 561 case Model_Zaurus_SLC7x0: {
549 OHingeStatus hs = readHingeSensor(); 562 OHingeStatus hs = readHingeSensor();
550 if ( hs == CASE_PORTRAIT ) dir = CCW; 563 if ( hs == CASE_PORTRAIT ) dir = CCW;
551 else if ( hs == CASE_UNKNOWN ) dir = CCW; 564 else if ( hs == CASE_UNKNOWN ) dir = CCW;
552 else dir = CW; 565 else dir = CW;