diff --git a/src/lib/platform/MSWindowsClipboard.cpp b/src/lib/platform/MSWindowsClipboard.cpp index bcee64b2a..9e4b9a57a 100644 --- a/src/lib/platform/MSWindowsClipboard.cpp +++ b/src/lib/platform/MSWindowsClipboard.cpp @@ -125,6 +125,7 @@ bool MSWindowsClipboard::open(Time time) const for (int i = 0; i < kMaxRetries; ++i) { if (OpenClipboard(m_window)) { + std::scoped_lock lock{m_mutex}; m_time = time; return true; } @@ -147,6 +148,7 @@ void MSWindowsClipboard::close() const IClipboard::Time MSWindowsClipboard::getTime() const { + std::scoped_lock lock{m_mutex}; return m_time; } diff --git a/src/lib/platform/MSWindowsClipboard.h b/src/lib/platform/MSWindowsClipboard.h index c1c3557ac..601a60b82 100644 --- a/src/lib/platform/MSWindowsClipboard.h +++ b/src/lib/platform/MSWindowsClipboard.h @@ -10,6 +10,7 @@ #include "deskflow/IClipboard.h" +#include #include #define WIN32_LEAN_AND_MEAN @@ -68,6 +69,7 @@ private: using ConverterList = std::vector; HWND m_window; + mutable std::mutex m_mutex; mutable Time m_time; ConverterList m_converters; static UINT s_ownershipFormat;