summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index 7302d2c..b7f3104 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -541,44 +541,55 @@ bool Zaurus::setDisplayStatus( bool on )
}
}
return res;
}
Transformation Zaurus::rotation() const
{
qDebug( "Zaurus::rotation()" );
Transformation rot;
switch ( d->m_model ) {
case Model_Zaurus_SLC3000: // fallthrough
- case Model_Zaurus_SLC1000: // fallthrough
+ case Model_Zaurus_SLC1000:
+ {
+ OHingeStatus hs = readHingeSensor();
+ qDebug( "Zaurus::rotation() - hinge sensor = %d", (int) hs );
+ if ( hs == CASE_PORTRAIT ) rot = Rot0;
+ else if ( hs == CASE_UNKNOWN ) rot = Rot270;
+ else rot = Rot270;
+ }
+ break;
+
+ // SLC7x0 needs a special case here, because we were able to set the W100
+ // hardware default rotation on kernel 2.6 to Rot0
case Model_Zaurus_SLC7x0:
{
OHingeStatus hs = readHingeSensor();
qDebug( "Zaurus::rotation() - hinge sensor = %d", (int) hs );
if ( m_embedix )
{
if ( hs == CASE_PORTRAIT ) rot = Rot0;
- else if ( hs == CASE_UNKNOWN ) rot = Rot0;
+ else if ( hs == CASE_UNKNOWN ) rot = Rot270;
else rot = Rot270;
}
else
{
if ( hs == CASE_PORTRAIT ) rot = Rot90;
else if ( hs == CASE_UNKNOWN ) rot = Rot0;
else rot = Rot0;
}
}
- break;
+ break;
case Model_Zaurus_SL6000:
case Model_Zaurus_SLB600:
case Model_Zaurus_SLA300:
case Model_Zaurus_SL5500:
case Model_Zaurus_SL5000:
default:
rot = d->m_rotation;
break;
}
return rot;
}