diff --git a/src/async_video_provider.cpp b/src/async_video_provider.cpp index d1b6fbce9..1b8582552 100644 --- a/src/async_video_provider.cpp +++ b/src/async_video_provider.cpp @@ -107,21 +107,17 @@ void AsyncVideoProvider::UpdateSubtitles(const AssFile *new_subs, std::set> changed; - size_t i = 0; - for (auto const& e : new_subs->Events) { - if (changes.count(&e)) - changed.emplace_back(i, new AssDialogue(e)); - ++i; - } + std::vector changed; + for (auto d : changes) + changed.push_back(new AssDialogue(*d)); worker->Async([=]{ - size_t i = 0; + int i = 0; auto it = subs->Events.begin(); for (auto& update : changed) { - std::advance(it, update.first - i); - i = update.first; - subs->Events.insert(it, *update.second); + std::advance(it, update->Row - i); + i = update->Row; + subs->Events.insert(it, *update); delete &*it--; }