From c997c557392d0b1b31b639e2fdd2b82d091749a4 Mon Sep 17 00:00:00 2001 From: Nathan Vegdahl Date: Sat, 20 Aug 2016 16:25:12 -0700 Subject: [PATCH] Separate timing of rendering and image writing in print out. --- src/main.rs | 7 ++++++- src/renderer.rs | 12 +++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index c6688ce..64127ee 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,6 +44,7 @@ use std::mem; use std::io; use std::io::Read; use std::fs::File; +use std::path::Path; use docopt::Docopt; @@ -146,8 +147,12 @@ fn main() { println!("\tBuilt scene in {:.3}s", t.tick()); println!("Rendering scene with {} threads...", thread_count); - r.render(thread_count); + let mut image = r.render(thread_count); println!("\tRendered scene in {:.3}s", t.tick()); + + println!("Writing image to disk..."); + let _ = image.write_png(Path::new(&r.output_file)); + println!("\tWrote image in {:.3}s", t.tick()); } } } diff --git a/src/renderer.rs b/src/renderer.rs index 1f3f7b8..8214203 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -1,6 +1,5 @@ use std::cmp; use std::io::{self, Write}; -use std::path::Path; use std::cmp::min; use std::cell::Cell; use std::sync::{RwLock, Mutex}; @@ -29,10 +28,10 @@ pub struct Renderer { } impl Renderer { - pub fn render(&self, thread_count: u32) { + pub fn render(&self, thread_count: u32) -> Image { let mut tpool = Pool::new(thread_count); - let mut image = Image::new(self.resolution.0, self.resolution.1); + let image = Image::new(self.resolution.0, self.resolution.1); let (img_width, img_height) = (image.width(), image.height()); let all_jobs_queued = RwLock::new(false); @@ -215,12 +214,11 @@ impl Renderer { *all_jobs_queued.write().unwrap() = true; }); - - // Write rendered image to disk - let _ = image.write_png(Path::new(&self.output_file)); - // Clear percentage progress print print!("\r \r"); + + // Return the rendered image + return image; } }