Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-06-16 11:22:35 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-06-16 11:22:35 +0300
commit794311c92bb2fb7544a8fd5f9d911589a805642b (patch)
treeed2de0c67f716f2ac6a50c92b26c2d4ad5d28b50 /intern/cycles/util
parent18e1c8d9fa6bfa3c435b4e9f043d9e7bf8e5eb6f (diff)
Cycles: Fix race condition happening in progress utility
This is not enough to mutex-guard modification code of integer values, since this operation is NOT atomic. This is not even safe for a single byte data types. For now guarded the getter functions, similar to other functions in this module. Ideally we want to switch modification to an atomic operations, so we wouldn't need any locks in the getters.
Diffstat (limited to 'intern/cycles/util')
-rw-r--r--intern/cycles/util/util_progress.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/intern/cycles/util/util_progress.h b/intern/cycles/util/util_progress.h
index bc672669e1f..cd4fe52fdc9 100644
--- a/intern/cycles/util/util_progress.h
+++ b/intern/cycles/util/util_progress.h
@@ -226,6 +226,7 @@ public:
int get_current_sample()
{
+ thread_scoped_lock lock(progress_mutex);
/* Note that the value here always belongs to the last tile that updated,
* so it's only useful if there is only one active tile. */
return current_tile_sample;
@@ -233,11 +234,13 @@ public:
int get_rendered_tiles()
{
+ thread_scoped_lock lock(progress_mutex);
return rendered_tiles;
}
int get_denoised_tiles()
{
+ thread_scoped_lock lock(progress_mutex);
return denoised_tiles;
}