From e279c149940d2842e5662e04cdc93b07d413e49b Mon Sep 17 00:00:00 2001 From: gixxpunk Date: Mon, 30 Oct 2017 21:01:52 +0100 Subject: [PATCH] CMovieBrowser::info_hdd_level(): fix miscalculation Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/a75915414dcc425b78eb3cea59ce74006080446a Author: gixxpunk Date: 2017-10-30 (Mon, 30 Oct 2017) Origin message was: ------------------ - CMovieBrowser::info_hdd_level(): fix miscalculation ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- src/gui/moviebrowser/mb.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/gui/moviebrowser/mb.cpp b/src/gui/moviebrowser/mb.cpp index e12bc099c..8be126f01 100644 --- a/src/gui/moviebrowser/mb.cpp +++ b/src/gui/moviebrowser/mb.cpp @@ -1651,23 +1651,27 @@ void CMovieBrowser::info_hdd_level(bool paint_hdd) if (show_mode == MB_SHOW_YT) return; + int percent_used = 0; + int tmp_percent_used = 0; struct statfs s; - long blocks_percent_used =0; - static long tmp_blocks_percent_used = 0; if (getSelectedFile() != NULL) { if (::statfs(getSelectedFile()->Name.c_str(), &s) == 0) { - long blocks_used = s.f_blocks - s.f_bfree; - blocks_percent_used = (blocks_used * 1000 / (blocks_used + s.f_bavail) + 5)/10; + if (s.f_blocks > 0) { + uint64_t bytes_total = s.f_blocks * s.f_bsize; + uint64_t bytes_free = s.f_bfree * s.f_bsize; + uint64_t bytes_used = bytes_total - bytes_free; + percent_used = (bytes_used * 200 + bytes_total) / 2 / bytes_total; + } } } - if (tmp_blocks_percent_used != blocks_percent_used || paint_hdd) { - tmp_blocks_percent_used = blocks_percent_used; + if (tmp_percent_used != percent_used || paint_hdd) { + tmp_percent_used = percent_used; const short pbw = 100; const short border = m_cBoxFrameTitleRel.iHeight/4; CProgressBar pb(m_cBoxFrame.iX+ m_cBoxFrameFootRel.iWidth - m_header->getContextBtnObject()->getWidth() - pbw - border, m_cBoxFrame.iY+m_cBoxFrameTitleRel.iY + border, pbw, m_cBoxFrameTitleRel.iHeight/2); pb.setType(CProgressBar::PB_REDRIGHT); - pb.setValues(blocks_percent_used, 100); + pb.setValues(percent_used, 100); pb.paint(false); } }