]> git.sesse.net Git - nageru/blobdiff - disk_space_estimator.cpp
Only report disk space anew every second. Saves 20% CPU or so on the UI thread (!).
[nageru] / disk_space_estimator.cpp
index a1961057dc79257f4e1ecdebce95306f803ec507..86e5e877f65aeaad39cd7423cc3c0577ed499a94 100644 (file)
@@ -50,7 +50,12 @@ void DiskSpaceEstimator::report_write(const std::string &filename, uint64_t pts)
                double bytes_per_second = double(st.st_size - measure_points.front().size) /
                        (pts - measure_points.front().pts) * TIMEBASE;
                double seconds_left = free_bytes / bytes_per_second;
-               callback(free_bytes, seconds_left);
+
+               // Only report every second, since updating the UI can be expensive.
+               if (last_pts_reported == 0 || pts - last_pts_reported >= TIMEBASE) {
+                       callback(free_bytes, seconds_left);
+                       last_pts_reported = pts;
+               }
        }
 
        measure_points.push_back({ pts, st.st_size });