From 382708132cfd7b97313390416fac4256dcbe901e Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Wed, 25 Sep 2013 14:34:07 -0700 Subject: [PATCH] Update indexing progress less often wxTheApp->QueueEvent is sufficiently slow that updating the progress could sometimes take longer than the actual indexing. --- aegisub/src/ffmpegsource_common.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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) {