exporter: Use rayon to export files in parallel

This commit is contained in:
Nathan Adams 2022-08-08 02:45:20 +02:00 committed by Adrian Wielgosik
parent 4499a11c61
commit 42e23a48d7
3 changed files with 7 additions and 2 deletions

1
Cargo.lock generated
View File

@ -1224,6 +1224,7 @@ dependencies = [
"image", "image",
"indicatif", "indicatif",
"log", "log",
"rayon",
"ruffle_core", "ruffle_core",
"ruffle_render_wgpu", "ruffle_render_wgpu",
"walkdir", "walkdir",

View File

@ -15,6 +15,7 @@ log = "0.4"
walkdir = "2.3.2" walkdir = "2.3.2"
indicatif = "0.17" indicatif = "0.17"
anyhow = "1.0" anyhow = "1.0"
rayon = "1.5.3"
[features] [features]
avm_debug = ["ruffle_core/avm_debug"] avm_debug = ["ruffle_core/avm_debug"]

View File

@ -2,6 +2,7 @@ use anyhow::{anyhow, Result};
use clap::Parser; use clap::Parser;
use image::RgbaImage; use image::RgbaImage;
use indicatif::{ProgressBar, ProgressStyle}; use indicatif::{ProgressBar, ProgressStyle};
use rayon::prelude::*;
use ruffle_core::tag_utils::SwfMovie; use ruffle_core::tag_utils::SwfMovie;
use ruffle_core::PlayerBuilder; use ruffle_core::PlayerBuilder;
use ruffle_render_wgpu::clap::{GraphicsBackend, PowerPreference}; use ruffle_render_wgpu::clap::{GraphicsBackend, PowerPreference};
@ -272,7 +273,7 @@ fn capture_multiple_swfs(descriptors: Arc<Descriptors>, opt: &Opt) -> Result<()>
None None
}; };
for file in &files { files.par_iter().try_for_each(|file| -> Result<()> {
let frames = take_screenshot( let frames = take_screenshot(
descriptors.clone(), descriptors.clone(),
file.path(), file.path(),
@ -317,7 +318,9 @@ fn capture_multiple_swfs(descriptors: Arc<Descriptors>, opt: &Opt) -> Result<()>
image.save(&destination)?; image.save(&destination)?;
} }
} }
}
Ok(())
})?;
let message = if opt.frames == 1 { let message = if opt.frames == 1 {
format!( format!(