[PATCH] No gas change event on merging dives with same gas
Miika Turkia
miika.turkia at gmail.com
Mon Oct 3 21:14:51 PDT 2016
When merging dives, this will skip the gas change event if both dives
use same gas.
Fixes #1099
Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
---
core/dive.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/core/dive.c b/core/dive.c
index 04c0bdc..c1d5b73 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -1765,6 +1765,15 @@ static int sort_event(struct event *a, struct event *b)
return strcmp(a->name, b->name);
}
+static int same_gas(struct event *a, struct event *b)
+{
+ if (a->type == b->type && a->flags == b->flags && a->value == b->value && !strcmp(a->name, b->name) &&
+ a->gas.mix.o2.permille == b->gas.mix.o2.permille && a->gas.mix.he.permille == b->gas.mix.he.permille) {
+ return true;
+ }
+ return false;
+}
+
static void merge_events(struct divecomputer *res, struct divecomputer *src1, struct divecomputer *src2, int offset)
{
struct event *a, *b;
@@ -1799,6 +1808,19 @@ static void merge_events(struct divecomputer *res, struct divecomputer *src1, st
break;
}
s = sort_event(a, b);
+
+ /* No gas change event when continuing with same gas */
+ if (same_gas(a, b)) {
+ if (s > 0) {
+ p = &b->next;
+ b = b->next;
+ } else {
+ p = &a->next;
+ a = a->next;
+ }
+ continue;
+ }
+
/* Pick b */
if (s > 0) {
*p = b;
--
2.5.0
More information about the subsurface
mailing list