Commit: e395c82d1fa2bf66ba0b91570dcfe0b9b0cc8cf9
Author: Brecht Van Lommel
Date:   Thu Feb 28 19:15:40 2019 +0100
Branches: blender2.7
https://developer.blender.org/rBe395c82d1fa2bf66ba0b91570dcfe0b9b0cc8cf9

Fix Cycles animation denoising not working for files on a network drive.

Can't do cross-device renaming, so put temporary file in same folder as
output file.

===================================================================

M       intern/cycles/render/denoising.cpp

===================================================================

diff --git a/intern/cycles/render/denoising.cpp 
b/intern/cycles/render/denoising.cpp
index 2fceee09c78..a89cb97c4d8 100644
--- a/intern/cycles/render/denoising.cpp
+++ b/intern/cycles/render/denoising.cpp
@@ -755,7 +755,9 @@ bool DenoiseImage::save_output(const string& out_filepath, 
string& error)
 
        /* Write to temporary file path, so we denoise images in place and don't
         * risk destroying files when something goes wrong in file saving. */
-       string tmp_filepath = OIIO::Filesystem::temp_directory_path() + "/" + 
OIIO::Filesystem::unique_path() + ".exr";
+       string extension = OIIO::Filesystem::extension(out_filepath);
+       string unique_name = ".denoise-tmp-" + OIIO::Filesystem::unique_path();
+       string tmp_filepath = out_filepath + unique_name + extension;
        unique_ptr<ImageOutput> out(ImageOutput::create(tmp_filepath));
 
        if(!out) {
@@ -783,17 +785,17 @@ bool DenoiseImage::save_output(const string& 
out_filepath, string& error)
        out.reset();
 
        /* Copy temporary file to outputput filepath. */
-       if(ok && !OIIO::Filesystem::rename(tmp_filepath, out_filepath)) {
-               error = "Failed to save to file " + out_filepath + ": " + 
out->geterror();
+       string rename_error;
+       if(ok && !OIIO::Filesystem::rename(tmp_filepath, out_filepath, 
rename_error)) {
+               error = "Failed to move denoised image to " + out_filepath + ": 
" + rename_error;
                ok = false;
        }
 
        if(!ok) {
                OIIO::Filesystem::remove(tmp_filepath);
-               return false;
        }
 
-       return true;
+       return ok;
 }
 
 /* File pattern handling and outer loop over frames */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to