[PATCH] Use gas_mod and fix fpe

Anton Lundin glance at acc.umu.se
Sun May 25 14:55:24 PDT 2014


When removing o2 from a gas, eg setting it to "", air, this code would
raise a nice fpe. Fix that by using gas_mod instead.

Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 qt-ui/downloadfromdivecomputer.cpp | 5 ++---
 qt-ui/downloadfromdivecomputer.h   | 2 +-
 qt-ui/models.cpp                   | 4 +++-
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index 681b0d2..71f428b 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -72,7 +72,6 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) :
 		if (default_dive_computer_product)
 			ui.product->setCurrentIndex(ui.product->findText(default_dive_computer_product));
 	}
-	connect(ui.product, SIGNAL(currentIndexChanged(int)), this, SLOT(on_product_currentIndexChanged()), Qt::UniqueConnection);
 	if (default_dive_computer_device)
 		ui.device->setEditText(default_dive_computer_device);
 
@@ -190,11 +189,11 @@ void DownloadFromDCWidget::on_vendor_currentIndexChanged(const QString &vendor)
 	//currentModel->deleteLater();
 }
 
-void DownloadFromDCWidget::on_product_currentIndexChanged()
+void DownloadFromDCWidget::on_product_currentIndexChanged(const QString &product)
 {
 	// Set up the DC descriptor
 	dc_descriptor_t *descriptor = NULL;
-	descriptor = descriptorLookup[ui.vendor->currentText() + ui.product->currentText()];
+	descriptor = descriptorLookup[ui.vendor->currentText() + product];
 
 	// call dc_descriptor_get_transport to see if the dc_transport_t is DC_TRANSPORT_SERIAL
 	if (dc_descriptor_get_transport(descriptor) == DC_TRANSPORT_SERIAL) {
diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h
index 9553222..3de102b 100644
--- a/qt-ui/downloadfromdivecomputer.h
+++ b/qt-ui/downloadfromdivecomputer.h
@@ -42,7 +42,7 @@ slots:
 	void on_cancel_clicked();
 	void on_search_clicked();
 	void on_vendor_currentIndexChanged(const QString &vendor);
-	void on_product_currentIndexChanged();
+	void on_product_currentIndexChanged(const QString &product);
 
 	void onDownloadThreadFinished();
 	void updateProgressBar();
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
index dc9a718..2bc690e 100644
--- a/qt-ui/models.cpp
+++ b/qt-ui/models.cpp
@@ -253,7 +253,9 @@ bool CylindersModel::setData(const QModelIndex &index, const QVariant &value, in
 	case O2:
 		if (CHANGED()) {
 			cyl->gasmix.o2 = string_to_fraction(vString.toUtf8().data());
-			cyl->depth.mm = 1600 * 1000 / cyl->gasmix.o2.permille * 10 - 10000;
+			pressure_t modppO2;
+			modppO2.mbar = 1600;
+			cyl->depth = gas_mod(&cyl->gasmix, modppO2);
 			changed = true;
 		}
 		break;
-- 
1.9.1



More information about the subsurface mailing list