summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--profile.c18
-rw-r--r--profile.h1
-rw-r--r--qt-ui/profile/divecartesianaxis.cpp2
-rw-r--r--qt-ui/profile/profilewidget2.cpp1
4 files changed, 21 insertions, 1 deletions
diff --git a/profile.c b/profile.c
index 23903d99f..a24cd1682 100644
--- a/profile.c
+++ b/profile.c
@@ -1300,6 +1300,24 @@ struct plot_info *create_plot_info(struct dive *dive, struct divecomputer *dc, s
return analyze_plot_info(pi);
}
+void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi)
+{
+ if (prefs.profile_calc_ceiling) /* reset deco information to start the calculation */
+ init_decompression(dive);
+ if (last_pi_entry) /* Create the new plot data */
+ free((void *)last_pi_entry);
+ last_pi_entry = populate_plot_entries(dive, dc, pi);
+ check_gas_change_events(dive, dc, pi); /* Populate the gas index from the gas change events */
+ setup_gas_sensor_pressure(dive, dc, pi); /* Try to populate our gas pressure knowledge */
+ populate_pressure_information(dive, dc, pi);/* .. calculate missing pressure entries */
+ calculate_sac(dive, pi); /* Calculate sac */
+ if (prefs.profile_calc_ceiling) /* Then, calculate deco information */
+ calculate_deco_information(dive, dc, pi, false);
+ calculate_gas_information(dive, pi); /* And finaly calculate gas partial pressures */
+ pi->meandepth = dive->dc.meandepth.mm;
+ analyze_plot_info(pi);
+}
+
/* make sure you pass this the FIRST dc - it just walks the list */
static int nr_dcs(struct divecomputer *main)
{
diff --git a/profile.h b/profile.h
index daf402d52..94b32a34b 100644
--- a/profile.h
+++ b/profile.h
@@ -52,6 +52,7 @@ int get_cylinder_pressure_range(struct graphics_context *gc);
void compare_samples(struct plot_data *e1, struct plot_data *e2, char *buf, int bufsize, int sum);
struct plot_data *populate_plot_entries(struct dive *dive, struct divecomputer *dc, struct plot_info *pi);
struct plot_info *analyze_plot_info(struct plot_info *pi);
+void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi);
struct ev_select {
char *ev_name;
diff --git a/qt-ui/profile/divecartesianaxis.cpp b/qt-ui/profile/divecartesianaxis.cpp
index 3ab4a4e26..043f193ea 100644
--- a/qt-ui/profile/divecartesianaxis.cpp
+++ b/qt-ui/profile/divecartesianaxis.cpp
@@ -51,7 +51,7 @@ void DiveCartesianAxis::updateTicks()
double currValue = min;
// Remove the uneeded Ticks / Texts.
- if (ticks.size() > steps) {
+ if (!ticks.isEmpty() && ticks.size() > steps) {
while (ticks.size() > steps) {
DiveLineItem *removedLine = ticks.takeLast();
removedLine->animatedHide();
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index d3d4ec9da..3970e6f3a 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -277,6 +277,7 @@ void ProfileWidget2::plotDives(QList<dive*> dives)
* shown.
*/
struct plot_info pInfo = calculate_max_limits_new(d, currentdc);
+ create_plot_info_new(d, currentdc, &pInfo);
int maxtime = get_maxtime(&pInfo);
int maxdepth = get_maxdepth(&pInfo);