From ebda10811186cab4d354757d1a75efc488a7ae71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Tue, 28 Jan 2025 13:35:19 +0100 Subject: [PATCH] libcamera: base: thread: Use `acquire` memo. when reading event dispatcher MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use `std::memory_order_acquire` everywhere the dispatcher is loaded to guarantee synchronization with the release-store that places the pointer there. Signed-off-by: Barnabás Pőcze Reviewed-by: Laurent Pinchart --- src/libcamera/base/thread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcamera/base/thread.cpp b/src/libcamera/base/thread.cpp index b94a3d74..bcb25ba6 100644 --- a/src/libcamera/base/thread.cpp +++ b/src/libcamera/base/thread.cpp @@ -244,7 +244,7 @@ Thread::Thread(std::string name) Thread::~Thread() { - delete data_->dispatcher_.load(std::memory_order_relaxed); + delete data_->dispatcher_.load(std::memory_order_acquire); } /** @@ -379,7 +379,7 @@ void Thread::exit(int code) data_->exitCode_ = code; data_->exit_.store(true, std::memory_order_release); - EventDispatcher *dispatcher = data_->dispatcher_.load(std::memory_order_relaxed); + EventDispatcher *dispatcher = data_->dispatcher_.load(std::memory_order_acquire); if (!dispatcher) return;