summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-23 23:32:42 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-04-24 10:40:12 -0700
commit17526ded58703064dedebdf53669e12f0ab4f43e (patch)
treeee7f16edfa84884db388f55546ae8b75f2f9ad97
parent52f93ea32661e25ee55206a1e452ef73a0aff3db (diff)
downloadsubsurface-17526ded58703064dedebdf53669e12f0ab4f43e.tar.gz
cleanup: move clearing of device nodes to clear_dive_file_data()
It makes no sense to keep the device nodes if all the other data is cleared. Let's do this automatically and not explicitly. This ensures that the function is also called on mobile. Currently it was only called on desktop. Weirdly, the parser-tests were expecting that the device nodes were not reset by clear_dive_file_data() and therefore divecomputers were accumulating in the test results. Thus, the additional computers had to be removed from the expected test results. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--core/device.h1
-rw-r--r--core/divecomputer.cpp5
-rw-r--r--core/divelist.c2
-rw-r--r--desktop-widgets/mainwindow.cpp5
-rw-r--r--dives/DL7.xml5
-rw-r--r--dives/TestDiveDM5.xml1
-rw-r--r--dives/TestDiveDivelogsDE.xml2
-rw-r--r--dives/TestDiveSeabearHUDC.xml2
-rw-r--r--dives/TestDiveSeabearNewFormat.xml2
-rw-r--r--dives/mergedVyperOstc.xml2
-rw-r--r--tests/testparse.cpp5
11 files changed, 9 insertions, 23 deletions
diff --git a/core/device.h b/core/device.h
index c1e767bee..65b715ba1 100644
--- a/core/device.h
+++ b/core/device.h
@@ -14,6 +14,7 @@ extern void set_dc_deviceid(struct divecomputer *dc, unsigned int deviceid);
extern void create_device_node(const char *model, uint32_t deviceid, const char *serial, const char *firmware, const char *nickname);
extern void call_for_each_dc(void *f, void (*callback)(void *, const char *, uint32_t,
const char *, const char *, const char *), bool select_only);
+extern void clear_device_nodes();
#ifdef __cplusplus
}
diff --git a/core/divecomputer.cpp b/core/divecomputer.cpp
index 9dfe5a373..369981d07 100644
--- a/core/divecomputer.cpp
+++ b/core/divecomputer.cpp
@@ -85,6 +85,11 @@ extern "C" void create_device_node(const char *model, uint32_t deviceid, const c
dcList.addDC(model, deviceid, nickname, serial, firmware);
}
+extern "C" void clear_device_nodes()
+{
+ dcList.dcs.clear();
+}
+
static bool compareDCById(const DiveComputerNode &a, const DiveComputerNode &b)
{
return a.deviceId < b.deviceId;
diff --git a/core/divelist.c b/core/divelist.c
index 994170570..c53bcb983 100644
--- a/core/divelist.c
+++ b/core/divelist.c
@@ -3,6 +3,7 @@
#include "subsurface-string.h"
#include "deco.h"
+#include "device.h"
#include "divesite.h"
#include "divelist.h"
#include "fulltext.h"
@@ -1367,6 +1368,7 @@ void clear_dive_file_data()
}
clear_dive(&displayed_dive);
+ clear_device_nodes();
reset_min_datafile_version();
clear_git_id();
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp
index d81a2f914..693d1f60f 100644
--- a/desktop-widgets/mainwindow.cpp
+++ b/desktop-widgets/mainwindow.cpp
@@ -18,7 +18,6 @@
#include "core/color.h"
#include "core/device.h"
-#include "core/divecomputer.h"
#include "core/divesitehelpers.h"
#include "core/errorhelper.h"
#include "core/file.h"
@@ -653,7 +652,7 @@ void MainWindow::closeCurrentFile()
{
/* free the dives and trips */
clear_git_id();
- MultiFilterSortModel::instance()->clear();
+ MultiFilterSortModel::instance()->clear(); // this clears all the core data structures
setCurrentFile(nullptr);
diveList->setSortOrder(DiveTripModelBase::NR, Qt::DescendingOrder);
MapWidget::instance()->reload();
@@ -663,8 +662,6 @@ void MainWindow::closeCurrentFile()
setFileClean();
clear_events();
-
- dcList.dcs.clear();
}
void MainWindow::updateCloudOnlineStatus()
diff --git a/dives/DL7.xml b/dives/DL7.xml
index 0687afa07..869da0022 100644
--- a/dives/DL7.xml
+++ b/dives/DL7.xml
@@ -1,10 +1,5 @@
<divelog program='subsurface' version='3'>
<settings>
-<divecomputerid model='Subsurface Divelog' deviceid='01234567' serial='3' nickname='Heinrichs Weikamp OSTC 3'/>
-<divecomputerid model='Vyper Air' deviceid='013749e4' serial='20400612'/>
-<divecomputerid model='Suunto Vyper Air' deviceid='11223344' serial='99999999'/>
-<divecomputerid model='Heinrichs Weikamp OSTC Sport' deviceid='abcdef00' serial='10000' firmware='10.31'/>
-<divecomputerid model='Vyper Air' deviceid='ffffffff' serial='20400612'/>
</settings>
<divesites>
</divesites>
diff --git a/dives/TestDiveDM5.xml b/dives/TestDiveDM5.xml
index a18f97578..cee358bf2 100644
--- a/dives/TestDiveDM5.xml
+++ b/dives/TestDiveDM5.xml
@@ -1,7 +1,6 @@
<divelog program='subsurface' version='3'>
<settings>
<divecomputerid model='Vyper Air' deviceid='013749e4' serial='20400612'/>
-<divecomputerid model='Vyper Air' deviceid='ffffffff' serial='20400612'/>
</settings>
<divesites>
</divesites>
diff --git a/dives/TestDiveDivelogsDE.xml b/dives/TestDiveDivelogsDE.xml
index fe56f858f..3baac8869 100644
--- a/dives/TestDiveDivelogsDE.xml
+++ b/dives/TestDiveDivelogsDE.xml
@@ -1,7 +1,5 @@
<divelog program='subsurface' version='3'>
<settings>
-<divecomputerid model='Vyper Air' deviceid='013749e4' serial='20400612'/>
-<divecomputerid model='Vyper Air' deviceid='ffffffff' serial='20400612'/>
</settings>
<divesites>
<site uuid='64785a00' name='USA, Hoodsport, WA / Sund Rock' gps='47.400269 -123.142632'>
diff --git a/dives/TestDiveSeabearHUDC.xml b/dives/TestDiveSeabearHUDC.xml
index 6c76492e7..0fde14fce 100644
--- a/dives/TestDiveSeabearHUDC.xml
+++ b/dives/TestDiveSeabearHUDC.xml
@@ -1,7 +1,5 @@
<divelog program='subsurface' version='3'>
<settings>
-<divecomputerid model='Vyper Air' deviceid='013749e4' serial='20400612'/>
-<divecomputerid model='Vyper Air' deviceid='ffffffff' serial='20400612'/>
</settings>
<divesites>
</divesites>
diff --git a/dives/TestDiveSeabearNewFormat.xml b/dives/TestDiveSeabearNewFormat.xml
index 6c8dd3b66..1647e609d 100644
--- a/dives/TestDiveSeabearNewFormat.xml
+++ b/dives/TestDiveSeabearNewFormat.xml
@@ -1,7 +1,5 @@
<divelog program='subsurface' version='3'>
<settings>
-<divecomputerid model='Vyper Air' deviceid='013749e4' serial='20400612'/>
-<divecomputerid model='Vyper Air' deviceid='ffffffff' serial='20400612'/>
</settings>
<divesites>
</divesites>
diff --git a/dives/mergedVyperOstc.xml b/dives/mergedVyperOstc.xml
index d35141a6e..c820fbed7 100644
--- a/dives/mergedVyperOstc.xml
+++ b/dives/mergedVyperOstc.xml
@@ -1,9 +1,7 @@
<divelog program='subsurface' version='3'>
<settings>
-<divecomputerid model='Vyper Air' deviceid='013749e4' serial='20400612'/>
<divecomputerid model='Suunto Vyper Air' deviceid='11223344' serial='99999999'/>
<divecomputerid model='Heinrichs Weikamp OSTC Sport' deviceid='abcdef00' serial='10000' firmware='10.31'/>
-<divecomputerid model='Vyper Air' deviceid='ffffffff' serial='20400612'/>
</settings>
<divesites>
</divesites>
diff --git a/tests/testparse.cpp b/tests/testparse.cpp
index 06c110acb..39e8a605d 100644
--- a/tests/testparse.cpp
+++ b/tests/testparse.cpp
@@ -286,11 +286,6 @@ void TestParse::testParseDLD()
fprintf(stderr, "number of dives from DLD: %d \n", dive_table.nr);
// Compare output
- /*
- * DC is not cleared from previous tests with the
- * clear_dive_file_data(), so we do have an additional DC nick
- * name field on the log.
- */
QCOMPARE(save_dives("./testdldout.ssrf"), 0);
FILE_COMPARE("./testdldout.ssrf",
SUBSURFACE_TEST_DATA "/dives/TestDiveDivelogsDE.xml")