diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2008-06-25 04:54:21 -0400 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2008-06-25 04:54:21 -0400 |
commit | 26ab00b44ce3c3306b8e0dad80a3d6820191f9e8 (patch) | |
tree | 389bc4c9442a5e8a2e0af72a2026fd5a7b4f27d3 | |
parent | Removed unused osx packaging script. (diff) | |
download | zmusicplayer-26ab00b44ce3c3306b8e0dad80a3d6820191f9e8.tar.xz zmusicplayer-26ab00b44ce3c3306b8e0dad80a3d6820191f9e8.zip |
Added delta to prevent floating point comparison and assignment math errors.
-rw-r--r-- | AutoSizingList.cpp | 10 |
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(); } |