From 698ebc30b349349d55da210274d0a041274bb2cf Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Thu, 18 Jun 2026 20:32:54 -0400 Subject: [PATCH] refactor: Use mutex to protect m_open / m_time in EiClipboard --- src/lib/platform/EiClipboard.cpp | 6 ++++++ src/lib/platform/EiClipboard.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/lib/platform/EiClipboard.cpp b/src/lib/platform/EiClipboard.cpp index ad46e47b5..02da3c42e 100644 --- a/src/lib/platform/EiClipboard.cpp +++ b/src/lib/platform/EiClipboard.cpp @@ -18,6 +18,7 @@ EiClipboard::EiClipboard(ClipboardID id) : m_id(id) bool EiClipboard::empty() { + std::scoped_lock lock{m_mutex}; if (!m_open) { LOG_WARN("cannot empty clipboard, not open"); return false; @@ -40,6 +41,7 @@ bool EiClipboard::empty() void EiClipboard::add(Format format, const std::string &data) { + std::scoped_lock lock{m_mutex}; if (!m_open) { LOG_WARN("cannot add to clipboard, not open"); return; @@ -57,6 +59,7 @@ void EiClipboard::add(Format format, const std::string &data) bool EiClipboard::open(Time time) const { + std::scoped_lock lock{m_mutex}; if (m_open) { LOG_DEBUG("skipping clipboard open, already open"); return true; @@ -70,6 +73,7 @@ bool EiClipboard::open(Time time) const void EiClipboard::close() const { + std::scoped_lock lock{m_mutex}; if (!m_open) { LOG_WARN("clipboard is not open"); } @@ -83,6 +87,7 @@ EiClipboard::Time EiClipboard::getTime() const bool EiClipboard::has(Format format) const { + std::scoped_lock lock{m_mutex}; if (!m_open) { LOG_WARN("cannot check for clipboard format, not open"); return false; @@ -92,6 +97,7 @@ bool EiClipboard::has(Format format) const std::string EiClipboard::get(Format format) const { + std::scoped_lock lock{m_mutex}; if (!m_open) { LOG_WARN("cannot get clipboard format, not open"); return ""; diff --git a/src/lib/platform/EiClipboard.h b/src/lib/platform/EiClipboard.h index 1db372dc2..4229949b0 100644 --- a/src/lib/platform/EiClipboard.h +++ b/src/lib/platform/EiClipboard.h @@ -8,6 +8,7 @@ #include "deskflow/ClipboardTypes.h" #include "deskflow/IClipboard.h" +#include namespace deskflow { @@ -43,6 +44,7 @@ private: ClipboardID m_id; mutable bool m_open = false; mutable Time m_time = 0; + mutable std::mutex m_mutex; bool m_owner = false; Time m_timeOwned = 0; bool m_added[static_cast(Format::TotalFormats)] = {false, false, false};