From 5116a25a55384d42d6e2d7df0bdeb0fd35799769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 22 Nov 2011 17:16:11 +0100 Subject: Fixed regression in tst_qscreen. The ScreenOrientation enum was changed so that the values are power of twos, angleBetween() needed to be fixed in order to reflect this. Task-number: QTBUG-22554 Change-Id: Ia45dd6643b40b14204abf967b00c0d04834736a3 Reviewed-by: Lars Knoll --- src/gui/kernel/qscreen.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/gui/kernel/qscreen.cpp') diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp index 8c25bea285..7d83cebd2b 100644 --- a/src/gui/kernel/qscreen.cpp +++ b/src/gui/kernel/qscreen.cpp @@ -335,6 +335,20 @@ Qt::ScreenOrientation QScreen::currentOrientation() const return d->platformScreen->currentOrientation(); } +// i must be power of two +static int log2(uint i) +{ + if (i == 0) + return -1; + + int result = 0; + while (!(i & 1)) { + ++result; + i >>= 1; + } + return result; +} + /*! Convenience function to compute the angle of rotation to get from rotation \a a to rotation \a b. @@ -346,7 +360,10 @@ int QScreen::angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) if (a == Qt::UnknownOrientation || b == Qt::UnknownOrientation || a == b) return 0; - int delta = int(b) - int(a); + int ia = log2(uint(a)); + int ib = log2(uint(b)); + + int delta = ia - ib; if (delta < 0) delta = delta + 4; -- cgit v1.2.3