diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-02-16 22:26:47 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-03-01 10:21:44 -0800 |
commit | d3f6e032cc25f9360049f9821cb4b9f055b28feb (patch) | |
tree | 49b5f777dd6c018e4c82c514050f39d0c46de1a9 /core | |
parent | 6434ad262887a473abd410fd8011bba1291663d6 (diff) | |
download | subsurface-d3f6e032cc25f9360049f9821cb4b9f055b28feb.tar.gz |
filter: index/unindex dives on loading or clearing logs
When loading dive data, populate the fulltext index. When clearing
dive data, free the fulltext index. When deleting a dive, remove it
from the fulltext index.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core')
-rw-r--r-- | core/dive.c | 10 | ||||
-rw-r--r-- | core/dive.h | 1 | ||||
-rw-r--r-- | core/divelist.c | 9 |
3 files changed, 20 insertions, 0 deletions
diff --git a/core/dive.c b/core/dive.c index 65398cade..e1bf92e0a 100644 --- a/core/dive.c +++ b/core/dive.c @@ -17,6 +17,10 @@ #include "tag.h" #include "trip.h" #include "structured_list.h" +#ifndef SUBSURFACE_MOBILE +#include "fulltext.h" +#endif + /* one could argue about the best place to have this variable - * it's used in the UI, but it seems to make the most sense to have it @@ -356,6 +360,9 @@ static void free_dive_structures(struct dive *d) { if (!d) return; +#ifndef SUBSURFACE_MOBILE + fulltext_unregister(d); +#endif /* free the strings */ free(d->buddy); free(d->divemaster); @@ -401,6 +408,9 @@ static void copy_dive_nodc(const struct dive *s, struct dive *d) *d = *s; memset(&d->cylinders, 0, sizeof(d->cylinders)); memset(&d->weightsystems, 0, sizeof(d->weightsystems)); +#ifndef SUBSURFACE_MOBILE + d->full_text = NULL; +#endif invalidate_dive_cache(d); d->buddy = copy_string(s->buddy); d->divemaster = copy_string(s->divemaster); diff --git a/core/dive.h b/core/dive.h index 345eb5073..a57021976 100644 --- a/core/dive.h +++ b/core/dive.h @@ -140,6 +140,7 @@ struct dive_site; struct dive_site_table; struct dive_trip; struct trip_table; +struct full_text_cache; struct dive { struct dive_trip *divetrip; timestamp_t when; diff --git a/core/divelist.c b/core/divelist.c index 6995c4c50..5a60594d7 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -5,6 +5,7 @@ #include "deco.h" #include "divesite.h" #include "divelist.h" +#include "fulltext.h" #include "planner.h" #include "qthelper.h" #include "gettext.h" @@ -829,6 +830,10 @@ void process_loaded_dives() /* Autogroup dives if desired by user. */ autogroup_dives(&dive_table, &trip_table); + +#ifndef SUBSURFACE_MOBILE + fulltext_reload(); +#endif } /* @@ -1338,6 +1343,10 @@ int get_dive_id_closest_to(timestamp_t when) void clear_dive_file_data() { +#ifndef SUBSURFACE_MOBILE + fulltext_unregister_all(); +#endif + while (dive_table.nr) delete_single_dive(0); current_dive = NULL; |