diff options
author | Robert C. Helling <helling@atdotde.de> | 2014-12-04 16:42:00 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-12-04 16:26:47 -0600 |
commit | aa22e0610c67dd86a54f7d7cab7987c399be4c46 (patch) | |
tree | 043f46bac21a776972e94dbd5b17b2c0c02d021c /profile.c | |
parent | 3e429ac77df46894444d426d26feda8c8aabe3d0 (diff) | |
download | subsurface-aa22e0610c67dd86a54f7d7cab7987c399be4c46.tar.gz |
Don't interpolate pressure while dragging waypoints
A profiler session in the planner shows that for deep long dives
a significant amount of CPU time is spent in populate_pressure_information()
which interpolates the cylinder pressure graphs.
This patch introduces a "fast" flag for the replot of the profile
which is active while the mouse button is still pressed and that
suppresses this calculation.
In the future, this flag could be used for other responsiveness tunings
of the plot.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'profile.c')
-rw-r--r-- | profile.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -1028,7 +1028,7 @@ static void debug_print_profiledata(struct plot_info *pi) * sides, so that you can do end-points without having to worry * about it. */ -void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi) +void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi, bool fast) { int o2, he, o2low; init_decompression(dive); @@ -1049,10 +1049,11 @@ void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plo check_gas_change_events(dive, dc, pi); /* Populate the gas index from the gas change events */ check_setpoint_events(dive, dc, pi); /* Populate setpoints */ setup_gas_sensor_pressure(dive, dc, pi); /* Try to populate our gas pressure knowledge */ - populate_pressure_information(dive, dc, pi, false); /* .. calculate missing pressure entries for all gasses except o2 */ - if (dc->dctype == CCR) /* For CCR dives.. */ - populate_pressure_information(dive, dc, pi, true); /* .. calculate missing o2 gas pressure entries */ - + if (!fast) { + populate_pressure_information(dive, dc, pi, false); /* .. calculate missing pressure entries for all gasses except o2 */ + if (dc->dctype == CCR) /* For CCR dives.. */ + populate_pressure_information(dive, dc, pi, true); /* .. calculate missing o2 gas pressure entries */ + } fill_o2_values(dc, pi, dive); /* .. and insert the O2 sensor data having 0 values. */ calculate_sac(dive, pi); /* Calculate sac */ calculate_deco_information(dive, dc, pi, false); /* and ceiling information, using gradient factor values in Preferences) */ |