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 changed files with 9 additions and 0 deletions

View File

@ -7,6 +7,8 @@
#include "COM_ConstantOperation.h"
#include "COM_MultiThreadedOperation.h"
#include <mutex>
namespace blender::compositor {
class TranslateOperation : public MultiThreadedOperation {
@ -24,6 +26,8 @@ class TranslateOperation : public MultiThreadedOperation {
bool is_delta_set_;
bool is_relative_;
std::mutex mutex_;
protected:
MemoryBufferExtend x_extend_mode_;
MemoryBufferExtend y_extend_mode_;
@ -60,6 +64,11 @@ class TranslateOperation : public MultiThreadedOperation {
inline void ensure_delta()
{
if (!is_delta_set_) {
std::unique_lock lock(mutex_);
if (is_delta_set_) {
return;
}
if (execution_model_ == eExecutionModel::Tiled) {
float temp_delta[4];
input_xoperation_->read_sampled(temp_delta, 0, 0, PixelSampler::Nearest);