Don't show gaschange events at the beginning of a dive

Linus Torvalds torvalds at linux-foundation.org
Tue Jul 1 12:07:38 PDT 2014


The initial gas change event is really special - it just specifies the gas 
mix from the dive computer. So don't show it as an event if that already 
matches the initial gas.

Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---

I'm not sure why this apparently hasn't annoyed anybody else.

 qt-ui/profile/diveeventitem.cpp | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/qt-ui/profile/diveeventitem.cpp b/qt-ui/profile/diveeventitem.cpp
index 73d58a6728f3..aacb0af73285 100644
--- a/qt-ui/profile/diveeventitem.cpp
+++ b/qt-ui/profile/diveeventitem.cpp
@@ -4,6 +4,7 @@
 #include "animationfunctions.h"
 #include "libdivecomputer.h"
 #include "dive.h"
+#include "planner.h"
 #include "profile.h"
 #include <QDebug>
 #include "gettextfromc.h"
@@ -107,8 +108,22 @@ void DiveEventItem::eventVisibilityChanged(const QString &eventName, bool visibl
 
 bool DiveEventItem::shouldBeHidden()
 {
+	struct event *event = internalEvent;
+
+	/*
+	 * Gas change events - particularly at the beginning of a dive - are
+	 * special. It's just the dive computer specifying the initial gas.
+	 *
+	 * Don't bother showing them if they match the first gas already
+	 */
+	if (!strcmp(event->name, "gaschange") && !event->time.seconds) {
+		struct gasmix *mix = get_gasmix_from_event(event);
+		struct dive *dive = current_dive;
+		if (dive && get_gasidx(dive, mix) <= 0)
+			return true;
+	}
 	for (int i = 0; i < evn_used; i++) {
-		if (!strcmp(internalEvent->name, ev_namelist[i].ev_name) && ev_namelist[i].plot_ev == false)
+		if (!strcmp(event->name, ev_namelist[i].ev_name) && ev_namelist[i].plot_ev == false)
 			return true;
 	}
 	return false;


More information about the subsurface mailing list