From 3395c7a4c979d84de784b1fec4e165d8733ad04e Mon Sep 17 00:00:00 2001 From: Alejandro Martinez Date: Fri, 12 Apr 2024 12:10:50 -0300 Subject: [PATCH] Fix 3b50dd8 for reentrancy Changed static variable for a member one, the problem was apparent when opening a different athlete besides the initial one. --- src/Core/RideDB.h | 3 +++ src/Core/RideDB.y | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Core/RideDB.h b/src/Core/RideDB.h index 317f05029..a00d189ae 100644 --- a/src/Core/RideDB.h +++ b/src/Core/RideDB.h @@ -82,6 +82,9 @@ struct RideDBContext { // is cache/rideDB.json an older version ? bool old; int loading; + + // tracks the last progress update sent + double lastProgressUpdate; }; #endif diff --git a/src/Core/RideDB.y b/src/Core/RideDB.y index bb0d4a000..b297dc863 100644 --- a/src/Core/RideDB.y +++ b/src/Core/RideDB.y @@ -82,11 +82,10 @@ ride: '{' rideelement_list '}' { jc->api->writeRideLine(jc->item, jc->request, jc->response); #endif } else { - static double last = 0.0; double progress= round(double(jc->loading++) / double(jc->cache->rides().count()) * 100.0f); - if (progress > last) { + if (progress > jc->lastProgressUpdate) { jc->context->notifyLoadProgress(jc->folder,progress); - last = progress; + jc->lastProgressUpdate = progress; } // find entry and update it @@ -344,6 +343,7 @@ RideCache::load() jc->api = NULL; jc->old = false; jc->loading = 0; + jc->lastProgressUpdate = 0.0; jc->folder = context->athlete->home->root().canonicalPath(); // clean item