From 1ec078a1e3bfac01e2b88a5cee3ece3e99317171 Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Fri, 4 May 2018 15:53:25 -0700 Subject: [PATCH] fix(capture_webrender): try fallback capture dir --- components/compositing/compositor.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 44e662191bb..6a17dccbc9c 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -1404,17 +1404,24 @@ impl IOCompositor { } pub fn capture_webrender(&mut self) { - match env::current_dir() { - Ok(current_dir) => { - let capture_id = now().to_timespec().sec.to_string(); - let capture_path = current_dir.join("capture_webrender").join(capture_id); + let capture_id = now().to_timespec().sec.to_string(); + let available_path = [env::current_dir(), Ok(env::temp_dir())].iter() + .filter_map(|val| val.as_ref().map(|dir| dir.join("capture_webrender").join(&capture_id)).ok()) + .find(|val| { + match create_dir_all(&val) { + Ok(_) => true, + Err(err) => { + eprintln!("Unable to create path '{:?}' for capture: {:?}", &val, err); + false + } + } + }); + + match available_path { + Some(capture_path) => { let revision_file_path = capture_path.join("wr.txt"); - if let Err(err) = create_dir_all(&capture_path) { - eprintln!("Unable to create path '{:?}' for capture: {:?}", capture_path, err); - return - } - + debug!("Trying to save webrender capture under {:?}", &revision_file_path); self.webrender_api.save_capture(capture_path, webrender_api::CaptureBits::all()); match File::create(revision_file_path) { @@ -1427,7 +1434,7 @@ impl IOCompositor { Err(err) => eprintln!("Capture triggered, creating webrender revision info skipped: {:?}", err) } }, - Err(err) => eprintln!("Unable to locate path to save captures: {:?}", err) + None => eprintln!("Unable to locate path to save captures") } } }