aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2008-06-25 04:54:21 -0400
committerJason A. Donenfeld <Jason@zx2c4.com>2008-06-25 04:54:21 -0400
commit26ab00b44ce3c3306b8e0dad80a3d6820191f9e8 (patch)
tree389bc4c9442a5e8a2e0af72a2026fd5a7b4f27d3
parentRemoved unused osx packaging script. (diff)
downloadzmusicplayer-26ab00b44ce3c3306b8e0dad80a3d6820191f9e8.tar.xz
zmusicplayer-26ab00b44ce3c3306b8e0dad80a3d6820191f9e8.zip
Added delta to prevent floating point comparison and assignment math errors.
-rw-r--r--AutoSizingList.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/AutoSizingList.cpp b/AutoSizingList.cpp
index c9ea14c..5899f75 100644
--- a/AutoSizingList.cpp
+++ b/AutoSizingList.cpp
@@ -51,24 +51,25 @@ void AutoSizingList::rowChange()
m_suggestedRatio3 = (double)suggestedWidth3 / (double)suggestedWidthTotal;
bool b;
double remain;
- #define MAX .42
+ #define DELTA .000000001
+ #define MAX (.42 - DELTA)
do {
b = false;
- if(m_suggestedRatio1 > MAX) {
+ if(m_suggestedRatio1 > MAX + DELTA) {
remain = m_suggestedRatio1 + m_suggestedRatio2 + m_suggestedRatio3 - MAX;
m_suggestedRatio1 = MAX;
m_suggestedRatio2 = (m_suggestedRatio2 / (m_suggestedRatio2 + m_suggestedRatio3)) * remain;
m_suggestedRatio3 = (m_suggestedRatio3 / (m_suggestedRatio2 + m_suggestedRatio3)) * remain;
b = true;
}
- if(m_suggestedRatio2 > MAX) {
+ if(m_suggestedRatio2 > MAX + DELTA) {
remain = m_suggestedRatio1 + m_suggestedRatio2 + m_suggestedRatio3 - MAX;
m_suggestedRatio2 = MAX;
m_suggestedRatio1 = (m_suggestedRatio1 / (m_suggestedRatio1 + m_suggestedRatio3)) * remain;
m_suggestedRatio3 = (m_suggestedRatio3 / (m_suggestedRatio1 + m_suggestedRatio3)) * remain;
b = true;
}
- if(m_suggestedRatio3 > MAX) {
+ if(m_suggestedRatio3 > MAX + DELTA) {
remain = m_suggestedRatio1 + m_suggestedRatio2 + m_suggestedRatio3 - MAX;
m_suggestedRatio3 = MAX;
m_suggestedRatio2 = (m_suggestedRatio2 / (m_suggestedRatio2 + m_suggestedRatio1)) * remain;
@@ -76,6 +77,7 @@ void AutoSizingList::rowChange()
b = true;
}
} while(b);
+ #undef DELTA
#undef MAX
fixColumnSizes();
}