summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
diff options
context:
space:
mode:
authorMichael Maltese <mchtly@gmail.com>2017-06-13 17:36:30 -0700
committerMichael Maltese <mchtly@gmail.com>2017-06-15 16:15:07 -0700
commit7c79673d780872c26bc8cb6808d22826c0a806c1 (patch)
treef7b58a4c9c6482ba46d819a98a5a0ac5b339c58f /Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
parent5b6c8c3ad0902d27a15cb733fe29f9cbedf10e1a (diff)
MappingButton: make m_block a Common::Flag
Diffstat (limited to 'Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp')
-rw-r--r--Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
index cfa33dcca3..84ba377337 100644
--- a/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
+++ b/Source/Core/DolphinQt2/Config/Mapping/MappingButton.cpp
@@ -33,19 +33,21 @@ void MappingButton::Connect()
void MappingButton::OnButtonPressed()
{
- if (m_block || m_parent->GetDevice() == nullptr || !m_reference->IsInput())
+ if (m_parent->GetDevice() == nullptr || !m_reference->IsInput())
return;
+ if (!m_block.TestAndSet())
+ return;
+
+ grabKeyboard();
+ grabMouse();
+
// Make sure that we don't block event handling
std::thread([this] {
const auto dev = m_parent->GetDevice();
setText(QStringLiteral("..."));
- m_block = true;
- grabKeyboard();
- grabMouse();
-
// Avoid that the button press itself is registered as an event
Common::SleepCurrentThread(100);
@@ -55,7 +57,7 @@ void MappingButton::OnButtonPressed()
releaseMouse();
releaseKeyboard();
- m_block = false;
+ m_block.Clear();
if (!expr.isEmpty())
{
@@ -94,7 +96,7 @@ bool MappingButton::event(QEvent* event)
const QEvent::Type event_type = event->type();
// Returning 'true' means "yes, this event has been handled, don't propagate it to parent
// widgets".
- if (m_block &&
+ if (m_block.IsSet() &&
(event_type == QEvent::KeyPress || event_type == QEvent::KeyRelease ||
event_type == QEvent::MouseButtonPress || event_type == QEvent::MouseButtonRelease ||
event_type == QEvent::MouseButtonDblClick))