Fix #118555: Occasional incorrect compositor result with relative transform #119883

Merged
Sergey Sharybin merged 1 commits from Sergey/blender:fix_118555 into blender-v4.1-release 2024-03-25 18:13:47 +01:00

1 Commits

Author SHA1 Message Date
Sergey Sharybin 499dc4c474 Fix #118555: Occasional incorrect compositor result with relative transform
buildbot/vexp-code-patch-lint Build done. Details
buildbot/vexp-code-patch-linux-x86_64 Build done. Details
buildbot/vexp-code-patch-darwin-x86_64 Build done. Details
buildbot/vexp-code-patch-darwin-arm64 Build done. Details
buildbot/vexp-code-patch-windows-amd64 Build done. Details
buildbot/vexp-code-patch-coordinator Build done. Details
In the tiled compositor ensure_delta() can be called from multiple threads,
but without any threading synchronization. This worked fine when the node
only supported absolute transform: multiple threads would do the same work
and assign delta to the same values.

With the addition of relative transform in #115947 a code which adjusts
previously calculated delta was added, leading to possible double-applying
relative transform.

The solution is to avoid multiple threads modifying the same data by using
a double-locked check.

This issue does not happen in 4.2 (main branch) because it switched to full
frame compositor, which works differently.
2024-03-25 16:59:24 +01:00