create a progress callback for async task
| 172 | |
| 173 | // create a progress callback for async task |
| 174 | ProgressCallback progressCallbackFor( size_t index ) |
| 175 | { |
| 176 | if ( !progressCallback ) |
| 177 | return {}; |
| 178 | |
| 179 | return [this, index] ( float v ) |
| 180 | { |
| 181 | float sum = .00f; |
| 182 | { |
| 183 | #if !defined( __EMSCRIPTEN__ ) || defined( __EMSCRIPTEN_PTHREADS__ ) |
| 184 | std::unique_lock lock( asyncProgressMutex ); |
| 185 | #endif |
| 186 | asyncProgressMap[index] = v; |
| 187 | for ( const auto& [_, v1] : asyncProgressMap ) |
| 188 | sum += v1 / (float)asyncProgressMap.size(); |
| 189 | } |
| 190 | return reportProgress( progressCallback, sum ); |
| 191 | }; |
| 192 | } |
| 193 | }; |
| 194 | |
| 195 | Expected<LoadedObjects> sLoadPath( const std::filesystem::path& path, const Settings::OpenFolder& openFolder, const ProgressCallback& callback ) |
no test coverage detected