subsurface/subsurface-core
Linus Torvalds f0be2764da Be smarter about dive renumbering when merging dives
We really have two different cases for merging dives:

 (a) downloading a new dive from a dive computer, and merging it with an
     existing dive that we had already created using a different dive
     computer.  This is the "try_to_merge()" case, called from
     "process_dives()

 (b) merging two different dives into one longer dive.  This is the
     "merge_two_dives()" case when you explicitly merge dives using the
     divelist.

While a lot of the issues are the same, many details differ, and one of
the details is how dive numbering should be handled.

In particular, when you download from a dive computer and merge with an
existing dive, you want too take the *maximum* dive number, because the
dive computer notion of which dive it is may well not match what the
user dive number is.

On the other hand, when you explicitly merge in the dive list, you end
up renumbering not just the dive you are merging, but also all
subsequent dives, since you now have one fewer dives overall.  So that
case already has to be handled by the caller.

Now, the simpler "download from dive computer" case was broken by commit
ce3a78efca ("Assign lower number to a merged dive instead of higher
one").  It fixed the numbering for the divelist case, but broke the
download case.

So this commit reverts commit ce3a78efca, and instead extends and
clarifies the dive renumbering that "merge_two_dives()" already did.  It
now explicitly renumbers not just the following dives, but also
renumbers the merged dive itself, so now we can go back to the old "take
the bigger dive number" for the core merging, which fixes the download
case.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30 20:16:19 -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 Move qt-ui to desktop-widgets 2015-10-30 10:36:49 -07:00
color.h Move qt-ui to desktop-widgets 2015-10-30 10:36:49 -07:00
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 Be smarter about dive renumbering when merging dives 2016-03-30 20:16:19 -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