From aa50f0049e6f81470fcda0935ca3da661bc7e37e Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Fri, 23 Sep 2022 12:58:55 -0400 Subject: Load database into in-memory database. Show the progress dialog while loading. --- qdeduper/sigdb_qt.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'qdeduper/sigdb_qt.cpp') diff --git a/qdeduper/sigdb_qt.cpp b/qdeduper/sigdb_qt.cpp index 733a198..45fc55a 100644 --- a/qdeduper/sigdb_qt.cpp +++ b/qdeduper/sigdb_qt.cpp @@ -48,6 +48,10 @@ SignatureDB::~SignatureDB() void SignatureDB::create_priv_struct() { if (!valid()) return; + fmap.clear(); + frmap.clear(); + distmap.clear(); + this->groups.clear(); auto ids = sdb->get_image_ids(); sdb->batch_get_signature_begin(); for (auto &id : ids) @@ -63,7 +67,6 @@ void SignatureDB::create_priv_struct() for (auto &dupe : dupes) distmap[std::make_pair(dupe.id1, dupe.id2)] = dupe.distance; - sdb->group_similar(); auto gps = sdb->groups_get(); gps.erase(std::remove_if(gps.begin(), gps.end(), [](std::vector v){ return v.size() < 2; }), gps.end()); this->groups = std::move(gps); @@ -89,6 +92,8 @@ void SignatureDB::scan_files(const std::vector &files, int njobs) Q_EMIT image_scanned(~size_t(0)); + sdb->group_similar(); + create_priv_struct(); } void SignatureDB::interrupt_scan() @@ -156,7 +161,9 @@ size_t SignatureDB::get_path_id(const fs::path& p) bool SignatureDB::load(const fs::path &p) { - return sdb->from_db_file(p); + bool ret = sdb->from_db_file(p); + create_priv_struct(); + return ret; } bool SignatureDB::save(const fs::path &p) -- cgit v1.2.3