summaryrefslogtreecommitdiff
path: root/src/protocols/XDGShell.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2024-12-03 21:15:25 +0000
committervaxerski <vaxry@vaxry.net>2024-12-03 21:15:25 +0000
commitf6ac755cf76750b8ee53389c54ef653590462c1c (patch)
treea216ea77acaf1e1165475bac00d70b28c2e55895 /src/protocols/XDGShell.cpp
parent320144ae7288fe23686935ebb235d9fe0c900862 (diff)
cleanup: Revert use doLater instead of adding idle event handlers (#8624)
This reverts commit 6d7544458d0fafcae410c1978a0cabce2fb4a346.
Diffstat (limited to 'src/protocols/XDGShell.cpp')
-rw-r--r--src/protocols/XDGShell.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/protocols/XDGShell.cpp b/src/protocols/XDGShell.cpp
index a542c394..688d0006 100644
--- a/src/protocols/XDGShell.cpp
+++ b/src/protocols/XDGShell.cpp
@@ -3,7 +3,6 @@
#include <algorithm>
#include "../Compositor.hpp"
#include "../managers/SeatManager.hpp"
-#include "../managers/eventLoop/EventLoopManager.hpp"
#include "core/Seat.hpp"
#include "core/Compositor.hpp"
#include <cstring>
@@ -470,6 +469,8 @@ CXDGSurfaceResource::CXDGSurfaceResource(SP<CXdgSurface> resource_, SP<CXDGWMBas
CXDGSurfaceResource::~CXDGSurfaceResource() {
events.destroy.emit();
+ if (configureSource)
+ wl_event_source_remove(configureSource);
if (surface)
surface->resetRole();
}
@@ -483,23 +484,22 @@ SP<CXDGSurfaceResource> CXDGSurfaceResource::fromResource(wl_resource* res) {
return data ? data->self.lock() : nullptr;
}
+static void onConfigure(void* data) {
+ ((CXDGSurfaceResource*)data)->configure();
+}
+
uint32_t CXDGSurfaceResource::scheduleConfigure() {
- if (configureScheduled)
+ if (configureSource)
return scheduledSerial;
+ configureSource = wl_event_loop_add_idle(g_pCompositor->m_sWLEventLoop, onConfigure, this);
scheduledSerial = wl_display_next_serial(g_pCompositor->m_sWLDisplay);
- configureScheduled = true;
- g_pEventLoopManager->doLater([this]() { configure(); });
-
return scheduledSerial;
}
void CXDGSurfaceResource::configure() {
- if (!resource)
- return;
-
- configureScheduled = false;
+ configureSource = nullptr;
resource->sendConfigure(scheduledSerial);
}