aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/protocols/Tablet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocols/Tablet.cpp')
-rw-r--r--src/protocols/Tablet.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/protocols/Tablet.cpp b/src/protocols/Tablet.cpp
index 7768402b..d7f741b9 100644
--- a/src/protocols/Tablet.cpp
+++ b/src/protocols/Tablet.cpp
@@ -2,7 +2,6 @@
#include "../devices/Tablet.hpp"
#include "../Compositor.hpp"
#include "../managers/SeatManager.hpp"
-#include "../managers/eventLoop/EventLoopManager.hpp"
#include "core/Seat.hpp"
#include "core/Compositor.hpp"
#include <algorithm>
@@ -163,6 +162,11 @@ CTabletToolV2Resource::CTabletToolV2Resource(SP<CZwpTabletToolV2> resource_, SP<
});
}
+CTabletToolV2Resource::~CTabletToolV2Resource() {
+ if (frameSource)
+ wl_event_source_remove(frameSource);
+}
+
bool CTabletToolV2Resource::good() {
return resource->resource();
}
@@ -201,22 +205,20 @@ void CTabletToolV2Resource::sendData() {
}
void CTabletToolV2Resource::queueFrame() {
- if (frameQueued)
+ if (frameSource)
return;
- frameQueued = true;
- g_pEventLoopManager->doLater([this]() {
- if (!frameQueued || tool.expired() || inert)
- return;
-
- sendFrame();
- });
+ frameSource = wl_event_loop_add_idle(g_pCompositor->m_sWLEventLoop, [](void* data) { ((CTabletToolV2Resource*)data)->sendFrame(false); }, this);
}
-void CTabletToolV2Resource::sendFrame() {
- frameQueued = false;
+void CTabletToolV2Resource::sendFrame(bool removeSource) {
+ if (frameSource) {
+ if (removeSource)
+ wl_event_source_remove(frameSource);
+ frameSource = nullptr;
+ }
- if (!current || !resource)
+ if (!current)
return;
timespec now;