refactor: Use mutex to protect m_open / m_time in EiClipboard

This commit is contained in:
sithlord48 2026-06-18 20:32:54 -04:00 committed by Chris Rizzitello
parent 0042b43bac
commit 698ebc30b3
2 changed files with 8 additions and 0 deletions

View file

@ -18,6 +18,7 @@ EiClipboard::EiClipboard(ClipboardID id) : m_id(id)
bool EiClipboard::empty() bool EiClipboard::empty()
{ {
std::scoped_lock lock{m_mutex};
if (!m_open) { if (!m_open) {
LOG_WARN("cannot empty clipboard, not open"); LOG_WARN("cannot empty clipboard, not open");
return false; return false;
@ -40,6 +41,7 @@ bool EiClipboard::empty()
void EiClipboard::add(Format format, const std::string &data) void EiClipboard::add(Format format, const std::string &data)
{ {
std::scoped_lock lock{m_mutex};
if (!m_open) { if (!m_open) {
LOG_WARN("cannot add to clipboard, not open"); LOG_WARN("cannot add to clipboard, not open");
return; return;
@ -57,6 +59,7 @@ void EiClipboard::add(Format format, const std::string &data)
bool EiClipboard::open(Time time) const bool EiClipboard::open(Time time) const
{ {
std::scoped_lock lock{m_mutex};
if (m_open) { if (m_open) {
LOG_DEBUG("skipping clipboard open, already open"); LOG_DEBUG("skipping clipboard open, already open");
return true; return true;
@ -70,6 +73,7 @@ bool EiClipboard::open(Time time) const
void EiClipboard::close() const void EiClipboard::close() const
{ {
std::scoped_lock lock{m_mutex};
if (!m_open) { if (!m_open) {
LOG_WARN("clipboard is not open"); LOG_WARN("clipboard is not open");
} }
@ -83,6 +87,7 @@ EiClipboard::Time EiClipboard::getTime() const
bool EiClipboard::has(Format format) const bool EiClipboard::has(Format format) const
{ {
std::scoped_lock lock{m_mutex};
if (!m_open) { if (!m_open) {
LOG_WARN("cannot check for clipboard format, not open"); LOG_WARN("cannot check for clipboard format, not open");
return false; return false;
@ -92,6 +97,7 @@ bool EiClipboard::has(Format format) const
std::string EiClipboard::get(Format format) const std::string EiClipboard::get(Format format) const
{ {
std::scoped_lock lock{m_mutex};
if (!m_open) { if (!m_open) {
LOG_WARN("cannot get clipboard format, not open"); LOG_WARN("cannot get clipboard format, not open");
return ""; return "";

View file

@ -8,6 +8,7 @@
#include "deskflow/ClipboardTypes.h" #include "deskflow/ClipboardTypes.h"
#include "deskflow/IClipboard.h" #include "deskflow/IClipboard.h"
#include <mutex>
namespace deskflow { namespace deskflow {
@ -43,6 +44,7 @@ private:
ClipboardID m_id; ClipboardID m_id;
mutable bool m_open = false; mutable bool m_open = false;
mutable Time m_time = 0; mutable Time m_time = 0;
mutable std::mutex m_mutex;
bool m_owner = false; bool m_owner = false;
Time m_timeOwned = 0; Time m_timeOwned = 0;
bool m_added[static_cast<int>(Format::TotalFormats)] = {false, false, false}; bool m_added[static_cast<int>(Format::TotalFormats)] = {false, false, false};