diff --git a/aegisub/src/ffmpegsource_common.cpp b/aegisub/src/ffmpegsource_common.cpp index cd811bd95..dcc9e2dad 100644 --- a/aegisub/src/ffmpegsource_common.cpp +++ b/aegisub/src/ffmpegsource_common.cpp @@ -103,13 +103,19 @@ FFMS_Index *FFmpegSourceProvider::DoIndexing(FFMS_Indexer *Indexer, agi::fs::pat // index all audio tracks FFMS_Index *Index; Progress.Run([&](agi::ProgressSink *ps) { + struct progress { + agi::ProgressSink *ps; + int calls; + }; + progress state = { ps, 0 }; Index = FFMS_DoIndexing(Indexer, Trackmask, FFMS_TRACKMASK_NONE, nullptr, nullptr, IndexEH, static_cast([](int64_t Current, int64_t Total, void *Private) -> int { - agi::ProgressSink *ps = static_cast(Private); - ps->SetProgress(Current, Total); - return ps->IsCancelled(); + auto state = static_cast(Private); + if (++state->calls % 10 == 0) + state->ps->SetProgress(Current, Total); + return state->ps->IsCancelled(); }), - ps, &ErrInfo); + &state, &ErrInfo); }); if (Index == nullptr) {