From 771525ae6fa44492e22d6ad34127d9893f3f7347 Mon Sep 17 00:00:00 2001
From: Thomas Goyne <plorkyeran@aegisub.org>
Date: Mon, 14 Jul 2014 08:40:13 -0700
Subject: [PATCH] Make AssFixStylesFilter usable statically

Trivially speeds up ProcFrame as constructing export filters isn't free
due to that it has to look up the translatable strings.
---
 src/async_video_provider.cpp | 2 +-
 src/export_fixstyle.cpp      | 2 +-
 src/export_fixstyle.h        | 3 ++-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/async_video_provider.cpp b/src/async_video_provider.cpp
index d184c1d00..72a6d8bfb 100644
--- a/src/async_video_provider.cpp
+++ b/src/async_video_provider.cpp
@@ -65,7 +65,7 @@ std::shared_ptr<VideoFrame> AsyncVideoProvider::ProcFrame(int frame_number, doub
 				single_frame = SUBS_FILE_ALREADY_LOADED;
 			}
 			else {
-				AssFixStylesFilter().ProcessSubs(subs.get(), nullptr);
+				AssFixStylesFilter::ProcessSubs(subs.get());
 				single_frame = frame_number;
 				subs_provider->LoadSubtitles(subs.get(), time);
 			}
diff --git a/src/export_fixstyle.cpp b/src/export_fixstyle.cpp
index ecd1c7c47..b68111b71 100644
--- a/src/export_fixstyle.cpp
+++ b/src/export_fixstyle.cpp
@@ -47,7 +47,7 @@ AssFixStylesFilter::AssFixStylesFilter()
 {
 }
 
-void AssFixStylesFilter::ProcessSubs(AssFile *subs, wxWindow *) {
+void AssFixStylesFilter::ProcessSubs(AssFile *subs) {
 	auto styles = subs->GetStyles();
 	for (auto& str : styles) boost::to_lower(str);
 	sort(begin(styles), end(styles));
diff --git a/src/export_fixstyle.h b/src/export_fixstyle.h
index 343092c5d..76bb18975 100644
--- a/src/export_fixstyle.h
+++ b/src/export_fixstyle.h
@@ -38,6 +38,7 @@
 /// @brief Fixes styles by replacing any style that isn't available on file with Default
 class AssFixStylesFilter final : public AssExportFilter {
 public:
-	void ProcessSubs(AssFile *subs, wxWindow *) override;
+	static void ProcessSubs(AssFile *subs);
+	void ProcessSubs(AssFile *subs, wxWindow *) override { ProcessSubs(subs); }
 	AssFixStylesFilter();
 };
-- 
GitLab