subsurface/subsurface-core
Linus Torvalds a554c66fa3 Fix cylinder end pressure fixup from samples
This bug admittedly hits almost nobody, but if you had multiple cylinder
pressure sensors on the same cylinder (attached to multiple dive
computers, of course), we would take the beginning pressure from the
first dive computer, and the ending pressure from the last dive
computer.

That came about because we'd just walk all the dive computer samples in
order, and the first time we see a relevant sample and we don't have a
beginning pressure, we'd take that pressure.  So the beginning pressure
was from the first dive computer, and once we'd seen a valid beginning
pressure, that would never change.

But as we're walking along, we'd continue to update the ending pressure
from the last relevant sample we see, which means that as we go on to
look at the other dive computers, we'd continue to update the ending
pressure with data from them.

And mixing beginning/ending pressures from two different sensors just
does not make sense.

This changes the logic to be the same for beginning and ending
pressures: we only update it once, with the first relevant sample we
see.  But we walk the samples twice: forwards from the beginning to
find the first beginning pressure, and backwards from the end to find
the ending pressure.

That means that as we move on to the second dive computer, we've now
filled in the ending pressure from the first one, and will no longer
update it any more.

NOTE! We don't stop scanning the samples (or the dive computers) just
because we've found a valid pressure value.  We'll always walk all the
samples because there might be multiple different cylinders that get
pressure data from different samples (and different dive computers).

We could have some early-out logic when we've filled in all relevant
cylinders, but since this just runs once per dive it's not worth it.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-04-01 20:18:53 -05:00
..
subsurface-qt Silence warnings in SettingsObjectWrapper.cpp 2016-03-07 16:45:16 -08:00
android.cpp Android: go back to using Qt's DataLocation 2015-11-07 10:52:19 -08:00
checkcloudconnection.cpp Switch to compile time connect syntax 2015-12-01 15:34:00 -08:00
checkcloudconnection.h
cloudstorage.cpp Silence warning about unused parameter 2016-03-07 11:00:27 -08:00
cloudstorage.h Fix usage of QString 2016-01-26 09:51:14 -08:00
CMakeLists.txt gas model: split up gas compressibility into a file of its own 2016-03-02 18:08:18 -08:00
cochran.c Silence warnings in cochran.c 2016-03-09 21:46:29 -08:00
cochran.h
color.cpp
color.h
compressibility.r gas model: add proper He compressibility data and do a least-squares fit 2016-03-13 12:43:30 -07:00
configuredivecomputer.cpp
configuredivecomputer.h
configuredivecomputerthreads.cpp Create a constructor with default parameters for some structs 2016-03-07 11:13:11 -08:00
configuredivecomputerthreads.h Remove unused headers 2016-01-22 06:50:06 -08:00
datatrak.c Silence warnings in datatrack.c 2016-03-09 11:44:20 -08:00
datatrak.h
deco.c Don't try to force depth to be unsigned 2016-03-23 09:53:44 -07:00
deco.h Don't try to force depth to be unsigned 2016-03-23 09:53:44 -07:00
device.c Add option to allocate the samples in fake_dc() 2016-02-20 09:36:14 -08:00
device.h Add option to allocate the samples in fake_dc() 2016-02-20 09:36:14 -08:00
devicedetails.cpp Create a constructor with default parameters for some structs 2016-03-07 11:13:11 -08:00
devicedetails.h Create a constructor with default parameters for some structs 2016-03-07 11:13:11 -08:00
display.h
dive.c Fix cylinder end pressure fixup from samples 2016-04-01 20:18:53 -05:00
dive.h Prevent unintentionally running as root 2016-03-26 20:08:08 -07:00
divecomputer.cpp
divecomputer.h
divelist.c Be smarter about dive renumbering when merging dives 2016-03-30 20:16:19 -05:00
divelist.h
divelogexportlogic.cpp
divelogexportlogic.h
divesite.c
divesite.cpp
divesite.h
divesitehelpers.cpp
divesitehelpers.h
equipment.c Silence warnings in equipment.c 2016-03-09 11:44:24 -08:00
exif.cpp
exif.h
file.c If the cache was valid, we don't want to reload just because of changes 2016-03-29 20:46:12 -05:00
file.h Fix annoyances on file.c 2016-03-07 11:24:10 -08:00
gas-model.c gas model: update to new coefficients, and simplify expressions 2016-03-13 12:43:35 -07:00
gaspressures.c Silence warnings in gaspressures.c 2016-03-09 11:44:28 -08:00
gaspressures.h Revert "Clean up signedness confusion in gaspressures.h" 2016-03-10 07:40:15 -08:00
gettext.h
gettextfromc.cpp
gettextfromc.h
git-access.c Use more informative error message in application log 2016-03-13 18:22:54 -07:00
git-access.h Cloud storage: check the top commit without loading dives 2015-12-27 10:06:33 -08:00
gpslocation.cpp QML UI: add the position source reported to the log 2016-03-24 17:48:20 -07:00
gpslocation.h Random whitespace cleanup 2016-01-11 06:14:45 -08:00
helpers.h Don't use "get_volume_string()" for cylinder size string 2016-02-25 00:58:09 +01:00
imagedownloader.cpp Fix loading images from URLs 2016-03-16 07:46:28 -07:00
imagedownloader.h Fix loading images from URLs 2016-03-16 07:46:28 -07:00
isocialnetworkintegration.cpp Clean up more unused variables 2016-03-07 11:21:44 -08:00
isocialnetworkintegration.h Remove the PluginSystem 2015-11-09 18:00:56 -08:00
libdivecomputer.c Clean up signedness confusion in libdivecomputer.c 2016-03-09 21:47:07 -08:00
libdivecomputer.h Clean up handling of various include file 2016-03-06 11:03:00 -08:00
linux.c Prevent unintentionally running as root 2016-03-26 20:08:08 -07:00
liquivision.c Silence warnings in liquivision.c 2016-03-07 16:34:17 -08:00
load-git.c Silence warnings in load-git.c 2016-03-09 11:44:38 -08:00
macos.c Prevent unintentionally running as root 2016-03-26 20:08:08 -07:00
membuffer.c Silence warnings in membuffer.c 2016-03-09 11:44:41 -08:00
membuffer.h
metrics.cpp QML UI: take device pixel ratio into account when scaling pixmaps on iOS 2016-03-28 17:05:29 -05:00
metrics.h QML UI: take device pixel ratio into account when scaling pixmaps on iOS 2016-03-28 17:05:29 -05:00
ostctools.c simple spelling changes 2015-11-15 12:10:37 -08:00
parse-xml.c Prevent unintentionally running as root 2016-03-26 20:08:08 -07:00
planner.c Don't try to force depth to be unsigned 2016-03-23 09:53:44 -07:00
planner.h
pluginmanager.cpp Make it possible to connect to facebook again 2015-11-08 09:44:40 -08:00
pluginmanager.h Remove empty implementations 2015-11-09 18:00:56 -08:00
pref.h Language Settings Wrapper 2016-01-24 21:26:45 -08:00
prefs-macros.h
profile.c Another attempt to clean up signed / unsigned in profile.c 2016-03-23 10:04:30 -07:00
profile.h Revert "Clean up signedness confusion in profile.c" 2016-03-10 07:37:18 -08:00
qt-gui.h qt-gui.h shouldn't include QApplication 2016-03-06 11:03:00 -08:00
qt-init.cpp
qthelper.cpp QML UI: brute force password saving 2016-03-29 21:43:37 -05:00
qthelper.h Remove unused variable 2016-03-07 11:17:16 -08:00
qthelperfromc.h Remove the non-canonical Subusrface version 2015-12-20 07:59:50 -08:00
qtserialbluetooth.cpp Silence warnings in qtserialbluetooth.cpp 2016-03-09 21:47:41 -08:00
save-git.c Silence warnings in save-git.c 2016-03-09 11:44:48 -08:00
save-html.c Silence warnings in save-html.c 2016-03-09 11:44:51 -08:00
save-html.h Support for imperial depth on worldmap export 2016-01-10 14:13:58 -08:00
save-xml.c Silence warnings in save-xml.c 2016-03-09 11:44:54 -08:00
serial_ftdi.c ftdi: fix memory leak on error 2015-12-27 21:31:13 -08:00
sha1.c
sha1.h
statistics.c Clean up signedness confusion in statistics.c 2016-03-09 21:47:22 -08:00
statistics.h Clean up signedness confusion in statistics.c 2016-03-09 21:47:22 -08:00
strndup.h
strtod.c
subsurfacestartup.c Prevent unintentionally running as root 2016-03-26 20:08:08 -07:00
subsurfacestartup.h
subsurfacesysinfo.cpp
subsurfacesysinfo.h
taxonomy.c
taxonomy.h
time.c Clean up signedness confusion in time.c 2016-03-09 21:47:28 -08:00
uemis-downloader.c Clean up UEMIS downloader 2016-03-09 21:47:36 -08:00
uemis.c Clean up UEMIS downloader 2016-03-09 21:47:36 -08:00
uemis.h Clean up UEMIS downloader 2016-03-09 21:47:36 -08:00
units.h Clean up signedness confusion in dive.c 2016-03-09 21:46:58 -08:00
version.c Introduce separate version number for Subsurface-mobile 2016-03-05 17:00:14 -08:00
version.h Introduce separate version number for Subsurface-mobile 2016-03-05 17:00:14 -08:00
webservice.h
windows.c Prevent unintentionally running as root 2016-03-26 20:08:08 -07:00
windowtitleupdate.cpp Don't crash if we have no WindowTitleUpdater registered 2015-11-07 09:53:17 -08:00
windowtitleupdate.h
worldmap-options.h
worldmap-save.c Silence warnings in worldmap-save.c 2016-03-09 11:44:57 -08:00
worldmap-save.h