diff options
| author | vaxerski <vaxry@vaxry.net> | 2024-12-03 21:15:25 +0000 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2024-12-03 21:15:25 +0000 |
| commit | f6ac755cf76750b8ee53389c54ef653590462c1c (patch) | |
| tree | a216ea77acaf1e1165475bac00d70b28c2e55895 /src/protocols/XDGShell.cpp | |
| parent | 320144ae7288fe23686935ebb235d9fe0c900862 (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.cpp | 18 |
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); } |
