From 78e9eddfb6bfbc6b103fc60c9831b23ef252886b Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Tue, 8 Jul 2025 09:56:40 -0700 Subject: core: use new typed signals from hu (#10853) --- src/protocols/AlphaModifier.cpp | 4 ++-- src/protocols/ContentType.cpp | 2 +- src/protocols/CursorShape.hpp | 4 ++-- src/protocols/DRMLease.cpp | 4 ++-- src/protocols/DRMSyncobj.cpp | 2 +- src/protocols/ExtWorkspace.cpp | 18 ++++++++---------- src/protocols/FocusGrab.cpp | 2 +- src/protocols/GammaControl.cpp | 4 ++-- src/protocols/HyprlandSurface.cpp | 4 ++-- src/protocols/IdleInhibit.cpp | 4 ++-- src/protocols/IdleInhibit.hpp | 4 ++-- src/protocols/InputMethodV2.cpp | 4 ++-- src/protocols/InputMethodV2.hpp | 18 +++++++++--------- src/protocols/LayerShell.cpp | 6 +++--- src/protocols/LayerShell.hpp | 11 ++++++----- src/protocols/LinuxDMABUF.cpp | 2 +- src/protocols/MesaDRM.cpp | 2 +- src/protocols/OutputManagement.cpp | 4 ++-- src/protocols/OutputPower.cpp | 10 +++++----- src/protocols/PointerConstraints.cpp | 2 +- src/protocols/PrimarySelection.cpp | 2 +- src/protocols/SessionLock.cpp | 6 +++--- src/protocols/SessionLock.hpp | 14 +++++++------- src/protocols/SinglePixel.cpp | 2 +- src/protocols/TextInputV1.hpp | 12 ++++++------ src/protocols/TextInputV3.hpp | 14 +++++++------- src/protocols/Viewporter.cpp | 2 +- src/protocols/VirtualKeyboard.hpp | 12 +++++++----- src/protocols/VirtualPointer.cpp | 2 +- src/protocols/VirtualPointer.hpp | 36 ++++++++++++++++++------------------ src/protocols/XDGShell.cpp | 6 +++--- src/protocols/XDGShell.hpp | 28 ++++++++++++++-------------- src/protocols/XWaylandShell.hpp | 4 ++-- src/protocols/core/Compositor.hpp | 14 +++++++------- src/protocols/core/DataDevice.cpp | 8 ++++---- src/protocols/core/Output.cpp | 2 +- src/protocols/core/Output.hpp | 2 +- src/protocols/core/Seat.cpp | 6 +++--- src/protocols/core/Seat.hpp | 4 ++-- src/protocols/core/Shm.cpp | 2 +- src/protocols/core/Subcompositor.cpp | 2 +- src/protocols/core/Subcompositor.hpp | 2 +- src/protocols/types/Buffer.cpp | 2 +- src/protocols/types/DMABuffer.cpp | 2 +- src/protocols/types/DataDevice.hpp | 2 +- 45 files changed, 150 insertions(+), 149 deletions(-) (limited to 'src/protocols') diff --git a/src/protocols/AlphaModifier.cpp b/src/protocols/AlphaModifier.cpp index ad4bc107..31e5e996 100644 --- a/src/protocols/AlphaModifier.cpp +++ b/src/protocols/AlphaModifier.cpp @@ -30,7 +30,7 @@ void CAlphaModifier::setResource(SP resource) { m_alpha = alpha / (float)UINT32_MAX; }); - m_listeners.surfaceCommitted = m_surface->m_events.commit.registerListener([this](std::any data) { + m_listeners.surfaceCommitted = m_surface->m_events.commit.listen([this] { auto surface = CWLSurface::fromResource(m_surface.lock()); if (surface && surface->m_alphaModifier != m_alpha) { @@ -45,7 +45,7 @@ void CAlphaModifier::setResource(SP resource) { } }); - m_listeners.surfaceDestroyed = m_surface->m_events.destroy.registerListener([this](std::any data) { + m_listeners.surfaceDestroyed = m_surface->m_events.destroy.listen([this] { if (!m_resource) PROTO::alphaModifier->destroyAlphaModifier(this); }); diff --git a/src/protocols/ContentType.cpp b/src/protocols/ContentType.cpp index 218c7aeb..ba2c1533 100644 --- a/src/protocols/ContentType.cpp +++ b/src/protocols/ContentType.cpp @@ -42,7 +42,7 @@ bool CContentTypeManager::good() { } CContentType::CContentType(WP surface) { - m_destroy = surface->m_events.destroy.registerListener([this](std::any d) { PROTO::contentType->destroyResource(this); }); + m_destroy = surface->m_events.destroy.listen([this] { PROTO::contentType->destroyResource(this); }); } CContentType::CContentType(SP resource) : m_resource(resource) { diff --git a/src/protocols/CursorShape.hpp b/src/protocols/CursorShape.hpp index d7ae75c1..918032ab 100644 --- a/src/protocols/CursorShape.hpp +++ b/src/protocols/CursorShape.hpp @@ -18,7 +18,7 @@ class CCursorShapeProtocol : public IWaylandProtocol { }; struct { - CSignal setShape; + CSignalT setShape; } m_events; private: @@ -38,4 +38,4 @@ class CCursorShapeProtocol : public IWaylandProtocol { namespace PROTO { inline UP cursorShape; -}; \ No newline at end of file +}; diff --git a/src/protocols/DRMLease.cpp b/src/protocols/DRMLease.cpp index 891b503c..d64555f2 100644 --- a/src/protocols/DRMLease.cpp +++ b/src/protocols/DRMLease.cpp @@ -64,7 +64,7 @@ CDRMLeaseResource::CDRMLeaseResource(SP resource_, SPm_monitor->m_isBeingLeased = true; } - m_listeners.destroyLease = m_lease->events.destroy.registerListener([this](std::any d) { + m_listeners.destroyLease = m_lease->events.destroy.listen([this] { for (auto const& m : m_requested) { if (m && m->m_monitor) m->m_monitor->m_isBeingLeased = false; @@ -167,7 +167,7 @@ CDRMLeaseConnectorResource::CDRMLeaseConnectorResource(WPsetData(this); - m_listeners.destroyMonitor = m_monitor->m_events.destroy.registerListener([this](std::any d) { + m_listeners.destroyMonitor = m_monitor->m_events.destroy.listen([this] { m_resource->sendWithdrawn(); m_dead = true; }); diff --git a/src/protocols/DRMSyncobj.cpp b/src/protocols/DRMSyncobj.cpp index 12adc387..2f5c3e14 100644 --- a/src/protocols/DRMSyncobj.cpp +++ b/src/protocols/DRMSyncobj.cpp @@ -74,7 +74,7 @@ CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(UPm_timeline, ((uint64_t)hi << 32) | (uint64_t)lo}; }); - m_listeners.surfacePrecommit = m_surface->m_events.precommit.registerListener([this](std::any d) { + m_listeners.surfacePrecommit = m_surface->m_events.precommit.listen([this] { if (!m_surface->m_pending.updated.bits.buffer || !m_surface->m_pending.buffer) { if (m_pendingAcquire.timeline() || m_pendingRelease.timeline()) { m_resource->error(WP_LINUX_DRM_SYNCOBJ_SURFACE_V1_ERROR_NO_BUFFER, "Missing buffer"); diff --git a/src/protocols/ExtWorkspace.cpp b/src/protocols/ExtWorkspace.cpp index 6c55e76e..ecba454e 100644 --- a/src/protocols/ExtWorkspace.cpp +++ b/src/protocols/ExtWorkspace.cpp @@ -15,7 +15,7 @@ CExtWorkspaceGroupResource::CExtWorkspaceGroupResource(WPsetData(this); m_manager->m_resource->sendWorkspaceGroup(m_resource.get()); - m_listeners.destroyed = m_monitor->m_events.destroy.registerListener([this](auto) { m_resource->sendRemoved(); }); + m_listeners.destroyed = m_monitor->m_events.destroy.listen([this] { m_resource->sendRemoved(); }); m_resource->setOnDestroy([this](auto) { PROTO::extWorkspace->destroyGroup(m_self); }); m_resource->setDestroy([this](auto) { PROTO::extWorkspace->destroyGroup(m_self); }); @@ -27,11 +27,9 @@ CExtWorkspaceGroupResource::CExtWorkspaceGroupResource(WPoutputResourceFrom(m_resource->client())) m_resource->sendOutputEnter(resource->getResource()->resource()); - m_listeners.outputBound = output->m_events.outputBound.registerListener([this](std::any data) { - auto resource = std::any_cast>(data); - - if (resource->client() == m_resource->client()) - m_resource->sendOutputEnter(resource->getResource()->resource()); + m_listeners.outputBound = output->m_events.outputBound.listen([this](const SP& output) { + if (output->client() == m_resource->client()) + m_resource->sendOutputEnter(output->getResource()->resource()); }); m_manager->sendGroupToWorkspaces(m_self); @@ -63,21 +61,21 @@ CExtWorkspaceResource::CExtWorkspaceResource(WP ma m_resource->setData(this); m_manager->m_resource->sendWorkspace(m_resource.get()); - m_listeners.destroyed = m_workspace->m_events.destroy.registerListener([this](auto) { + m_listeners.destroyed = m_workspace->m_events.destroy.listen([this] { m_resource->sendRemoved(); if (m_manager) m_manager->scheduleDone(); }); - m_listeners.activeChanged = m_workspace->m_events.activeChange.registerListener([this](auto) { + m_listeners.activeChanged = m_workspace->m_events.activeChanged.listen([this] { sendState(); sendCapabilities(); }); - m_listeners.monitorChanged = m_workspace->m_events.monitorChange.registerListener([this](auto) { this->sendGroup(); }); + m_listeners.monitorChanged = m_workspace->m_events.monitorChanged.listen([this] { this->sendGroup(); }); - m_listeners.renamed = m_workspace->m_events.rename.registerListener([this](auto) { + m_listeners.renamed = m_workspace->m_events.renamed.listen([this] { m_resource->sendName(m_workspace->m_name.c_str()); if (m_manager) diff --git a/src/protocols/FocusGrab.cpp b/src/protocols/FocusGrab.cpp index 41396459..3ab8d1e2 100644 --- a/src/protocols/FocusGrab.cpp +++ b/src/protocols/FocusGrab.cpp @@ -8,7 +8,7 @@ #include CFocusGrabSurfaceState::CFocusGrabSurfaceState(CFocusGrab* grab, SP surface) { - m_listeners.destroy = surface->m_events.destroy.registerListener([=](std::any d) { grab->eraseSurface(surface); }); + m_listeners.destroy = surface->m_events.destroy.listen([grab, surface] { grab->eraseSurface(surface); }); } CFocusGrab::CFocusGrab(SP resource_) : m_resource(resource_) { diff --git a/src/protocols/GammaControl.cpp b/src/protocols/GammaControl.cpp index 1d5b4fd5..29a9cae4 100644 --- a/src/protocols/GammaControl.cpp +++ b/src/protocols/GammaControl.cpp @@ -108,8 +108,8 @@ CGammaControl::CGammaControl(SP resource_, wl_resource* out m_resource->sendGammaSize(m_gammaSize); - m_listeners.monitorDestroy = m_monitor->m_events.destroy.registerListener([this](std::any) { this->onMonitorDestroy(); }); - m_listeners.monitorDisconnect = m_monitor->m_events.disconnect.registerListener([this](std::any) { this->onMonitorDestroy(); }); + m_listeners.monitorDestroy = m_monitor->m_events.destroy.listen([this] { this->onMonitorDestroy(); }); + m_listeners.monitorDisconnect = m_monitor->m_events.disconnect.listen([this] { this->onMonitorDestroy(); }); } CGammaControl::~CGammaControl() { diff --git a/src/protocols/HyprlandSurface.cpp b/src/protocols/HyprlandSurface.cpp index 2e386027..b2692d1f 100644 --- a/src/protocols/HyprlandSurface.cpp +++ b/src/protocols/HyprlandSurface.cpp @@ -51,7 +51,7 @@ void CHyprlandSurface::setResource(SP resource) { m_visibleRegion = CWLRegionResource::fromResource(region)->m_region; }); - m_listeners.surfaceCommitted = m_surface->m_events.commit.registerListener([this](std::any data) { + m_listeners.surfaceCommitted = m_surface->m_events.commit.listen([this] { auto surface = CWLSurface::fromResource(m_surface.lock()); if (surface && (surface->m_overallOpacity != m_opacity || m_visibleRegionChanged)) { @@ -67,7 +67,7 @@ void CHyprlandSurface::setResource(SP resource) { } }); - m_listeners.surfaceDestroyed = m_surface->m_events.destroy.registerListener([this](std::any data) { + m_listeners.surfaceDestroyed = m_surface->m_events.destroy.listen([this] { if (!m_resource) PROTO::hyprlandSurface->destroySurface(this); }); diff --git a/src/protocols/IdleInhibit.cpp b/src/protocols/IdleInhibit.cpp index f8031d22..e7e0e676 100644 --- a/src/protocols/IdleInhibit.cpp +++ b/src/protocols/IdleInhibit.cpp @@ -6,7 +6,7 @@ CIdleInhibitor::CIdleInhibitor(SP resource_, SP resource_, SP surface_) : m_resource(resource_), m_surface(surface_) { - m_listeners.destroySurface = m_surface->m_events.destroy.registerListener([this](std::any d) { + m_listeners.destroySurface = m_surface->m_events.destroy.listen([this] { m_surface.reset(); m_listeners.destroySurface.reset(); m_destroySent = true; @@ -49,4 +49,4 @@ void CIdleInhibitProtocol::onCreateInhibitor(CZwpIdleInhibitManagerV1* pMgr, uin RESOURCE->m_inhibitor = makeShared(RESOURCE, surface); m_events.newIdleInhibitor.emit(RESOURCE->m_inhibitor); -} \ No newline at end of file +} diff --git a/src/protocols/IdleInhibit.hpp b/src/protocols/IdleInhibit.hpp index 791d83f9..e04b6725 100644 --- a/src/protocols/IdleInhibit.hpp +++ b/src/protocols/IdleInhibit.hpp @@ -28,7 +28,7 @@ class CIdleInhibitorResource { SP m_inhibitor; struct { - CSignal destroy; + CSignalT<> destroy; } m_events; private: @@ -48,7 +48,7 @@ class CIdleInhibitProtocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newIdleInhibitor; // data: SP + CSignalT> newIdleInhibitor; } m_events; private: diff --git a/src/protocols/InputMethodV2.cpp b/src/protocols/InputMethodV2.cpp index 63f9f33f..7826a962 100644 --- a/src/protocols/InputMethodV2.cpp +++ b/src/protocols/InputMethodV2.cpp @@ -89,7 +89,7 @@ CInputMethodPopupV2::CInputMethodPopupV2(SP resource_, m_surface = surface; - m_listeners.destroySurface = surface->m_events.destroy.registerListener([this](std::any d) { + m_listeners.destroySurface = surface->m_events.destroy.listen([this] { if (m_mapped) m_events.unmap.emit(); @@ -102,7 +102,7 @@ CInputMethodPopupV2::CInputMethodPopupV2(SP resource_, m_surface.reset(); }); - m_listeners.commitSurface = surface->m_events.commit.registerListener([this](std::any d) { + m_listeners.commitSurface = surface->m_events.commit.listen([this] { if (m_surface->m_current.texture && !m_mapped) { m_mapped = true; m_surface->map(); diff --git a/src/protocols/InputMethodV2.hpp b/src/protocols/InputMethodV2.hpp index 74efcbb3..4ee579ec 100644 --- a/src/protocols/InputMethodV2.hpp +++ b/src/protocols/InputMethodV2.hpp @@ -18,9 +18,9 @@ class CInputMethodV2 { ~CInputMethodV2(); struct { - CSignal onCommit; - CSignal destroy; - CSignal newPopup; + CSignalT<> onCommit; + CSignalT<> destroy; + CSignalT> newPopup; } m_events; struct SState { @@ -110,10 +110,10 @@ class CInputMethodPopupV2 { SP surface(); struct { - CSignal map; - CSignal unmap; - CSignal commit; - CSignal destroy; + CSignalT<> map; + CSignalT<> unmap; + CSignalT<> commit; + CSignalT<> destroy; } m_events; bool m_mapped = false; @@ -136,7 +136,7 @@ class CInputMethodV2Protocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newIME; // SP + CSignalT> newIME; } m_events; private: @@ -160,4 +160,4 @@ class CInputMethodV2Protocol : public IWaylandProtocol { namespace PROTO { inline UP ime; -}; \ No newline at end of file +}; diff --git a/src/protocols/LayerShell.cpp b/src/protocols/LayerShell.cpp index bb5480b6..be9e3370 100644 --- a/src/protocols/LayerShell.cpp +++ b/src/protocols/LayerShell.cpp @@ -33,14 +33,14 @@ CLayerShellResource::CLayerShellResource(SP resource_, SPdestroyResource(this); }); - m_listeners.destroySurface = surf_->m_events.destroy.registerListener([this](std::any d) { + m_listeners.destroySurface = surf_->m_events.destroy.listen([this] { m_events.destroy.emit(); PROTO::layerShell->destroyResource(this); }); - m_listeners.unmapSurface = surf_->m_events.unmap.registerListener([this](std::any d) { m_events.unmap.emit(); }); + m_listeners.unmapSurface = surf_->m_events.unmap.listen([this] { m_events.unmap.emit(); }); - m_listeners.commitSurface = surf_->m_events.commit.registerListener([this](std::any d) { + m_listeners.commitSurface = surf_->m_events.commit.listen([this] { m_current = m_pending; m_pending.committed = 0; diff --git a/src/protocols/LayerShell.hpp b/src/protocols/LayerShell.hpp index c6c162a3..ce8de05a 100644 --- a/src/protocols/LayerShell.hpp +++ b/src/protocols/LayerShell.hpp @@ -10,6 +10,7 @@ #include "types/SurfaceRole.hpp" class CMonitor; +class CXDGPopupResource; class CWLSurfaceResource; class CLayerShellResource; @@ -44,11 +45,11 @@ class CLayerShellResource { }; struct { - CSignal destroy; - CSignal commit; - CSignal map; - CSignal unmap; - CSignal newPopup; // wlr_xdg_popup* + CSignalT<> destroy; + CSignalT<> commit; + CSignalT<> map; + CSignalT<> unmap; + CSignalT> newPopup; } m_events; struct SState { diff --git a/src/protocols/LinuxDMABUF.cpp b/src/protocols/LinuxDMABUF.cpp index a0fe571a..8bf95c13 100644 --- a/src/protocols/LinuxDMABUF.cpp +++ b/src/protocols/LinuxDMABUF.cpp @@ -99,7 +99,7 @@ CLinuxDMABuffer::CLinuxDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDM m_buffer->m_resource->m_buffer = m_buffer; - m_listeners.bufferResourceDestroy = m_buffer->events.destroy.registerListener([this](std::any d) { + m_listeners.bufferResourceDestroy = m_buffer->events.destroy.listen([this] { m_listeners.bufferResourceDestroy.reset(); PROTO::linuxDma->destroyResource(this); }); diff --git a/src/protocols/MesaDRM.cpp b/src/protocols/MesaDRM.cpp index c8532265..45ee24c5 100644 --- a/src/protocols/MesaDRM.cpp +++ b/src/protocols/MesaDRM.cpp @@ -14,7 +14,7 @@ CMesaDRMBufferResource::CMesaDRMBufferResource(uint32_t id, wl_client* client, A m_buffer = makeShared(id, client, attrs_); m_buffer->m_resource->m_buffer = m_buffer; - m_listeners.bufferResourceDestroy = m_buffer->events.destroy.registerListener([this](std::any d) { + m_listeners.bufferResourceDestroy = m_buffer->events.destroy.listen([this] { m_listeners.bufferResourceDestroy.reset(); PROTO::mesaDRM->destroyResource(this); }); diff --git a/src/protocols/OutputManagement.cpp b/src/protocols/OutputManagement.cpp index b5c0de74..ab2ec88a 100644 --- a/src/protocols/OutputManagement.cpp +++ b/src/protocols/OutputManagement.cpp @@ -96,7 +96,7 @@ COutputHead::COutputHead(SP resource_, PHLMONITOR pMonitor_) m_resource->setRelease([this](CZwlrOutputHeadV1* r) { PROTO::outputManagement->destroyResource(this); }); m_resource->setOnDestroy([this](CZwlrOutputHeadV1* r) { PROTO::outputManagement->destroyResource(this); }); - m_listeners.monitorDestroy = m_monitor->m_events.destroy.registerListener([this](std::any d) { + m_listeners.monitorDestroy = m_monitor->m_events.destroy.listen([this] { m_resource->sendFinished(); for (auto const& mw : m_modes) { @@ -114,7 +114,7 @@ COutputHead::COutputHead(SP resource_, PHLMONITOR pMonitor_) } }); - m_listeners.monitorModeChange = m_monitor->m_events.modeChanged.registerListener([this](std::any d) { updateMode(); }); + m_listeners.monitorModeChange = m_monitor->m_events.modeChanged.listen([this] { updateMode(); }); } bool COutputHead::good() { diff --git a/src/protocols/OutputPower.cpp b/src/protocols/OutputPower.cpp index bae3078f..e3cc7336 100644 --- a/src/protocols/OutputPower.cpp +++ b/src/protocols/OutputPower.cpp @@ -23,15 +23,15 @@ COutputPower::COutputPower(SP resource_, PHLMONITOR pMonitor m_resource->sendMode(m_monitor->m_dpmsStatus ? ZWLR_OUTPUT_POWER_V1_MODE_ON : ZWLR_OUTPUT_POWER_V1_MODE_OFF); - m_listeners.monitorDestroy = m_monitor->m_events.destroy.registerListener([this](std::any v) { + m_listeners.monitorDestroy = m_monitor->m_events.destroy.listen([this] { m_monitor.reset(); m_resource->sendFailed(); }); - m_listeners.monitorDpms = m_monitor->m_events.dpmsChanged.registerListener( - [this](std::any v) { m_resource->sendMode(m_monitor->m_dpmsStatus ? ZWLR_OUTPUT_POWER_V1_MODE_ON : ZWLR_OUTPUT_POWER_V1_MODE_OFF); }); - m_listeners.monitorState = m_monitor->m_events.modeChanged.registerListener( - [this](std::any v) { m_resource->sendMode(m_monitor->m_dpmsStatus ? ZWLR_OUTPUT_POWER_V1_MODE_ON : ZWLR_OUTPUT_POWER_V1_MODE_OFF); }); + m_listeners.monitorDpms = + m_monitor->m_events.dpmsChanged.listen([this] { m_resource->sendMode(m_monitor->m_dpmsStatus ? ZWLR_OUTPUT_POWER_V1_MODE_ON : ZWLR_OUTPUT_POWER_V1_MODE_OFF); }); + m_listeners.monitorState = + m_monitor->m_events.modeChanged.listen([this] { m_resource->sendMode(m_monitor->m_dpmsStatus ? ZWLR_OUTPUT_POWER_V1_MODE_ON : ZWLR_OUTPUT_POWER_V1_MODE_OFF); }); } bool COutputPower::good() { diff --git a/src/protocols/PointerConstraints.cpp b/src/protocols/PointerConstraints.cpp index ea917932..24ccc980 100644 --- a/src/protocols/PointerConstraints.cpp +++ b/src/protocols/PointerConstraints.cpp @@ -80,7 +80,7 @@ CPointerConstraint::~CPointerConstraint() { void CPointerConstraint::sharedConstructions() { if (m_hlSurface) { - m_listeners.destroySurface = m_hlSurface->m_events.destroy.registerListener([this](std::any d) { + m_listeners.destroySurface = m_hlSurface->m_events.destroy.listen([this] { m_hlSurface.reset(); if (m_active) deactivate(); diff --git a/src/protocols/PrimarySelection.cpp b/src/protocols/PrimarySelection.cpp index 2b01eddd..9a61f25a 100644 --- a/src/protocols/PrimarySelection.cpp +++ b/src/protocols/PrimarySelection.cpp @@ -228,7 +228,7 @@ void CPrimarySelectionProtocol::bindManager(wl_client* client, void* data, uint3 // we need to do it here because protocols come before seatMgr if (!m_listeners.onPointerFocusChange) - m_listeners.onPointerFocusChange = g_pSeatManager->m_events.pointerFocusChange.registerListener([this](std::any d) { this->onPointerFocus(); }); + m_listeners.onPointerFocusChange = g_pSeatManager->m_events.pointerFocusChange.listen([this] { this->onPointerFocus(); }); } void CPrimarySelectionProtocol::destroyResource(CPrimarySelectionManager* resource) { diff --git a/src/protocols/SessionLock.cpp b/src/protocols/SessionLock.cpp index d3916fdc..64c0569b 100644 --- a/src/protocols/SessionLock.cpp +++ b/src/protocols/SessionLock.cpp @@ -24,7 +24,7 @@ CSessionLockSurface::CSessionLockSurface(SP resource_, m_resource->setAckConfigure([this](CExtSessionLockSurfaceV1* r, uint32_t serial) { m_ackdConfigure = true; }); - m_listeners.surfaceCommit = m_surface->m_events.commit.registerListener([this](std::any d) { + m_listeners.surfaceCommit = m_surface->m_events.commit.listen([this] { if (!m_surface->m_current.texture) { LOGM(ERR, "SessionLock attached a null buffer"); m_resource->error(EXT_SESSION_LOCK_SURFACE_V1_ERROR_NULL_BUFFER, "Null buffer attached"); @@ -46,7 +46,7 @@ CSessionLockSurface::CSessionLockSurface(SP resource_, m_committed = true; }); - m_listeners.surfaceDestroy = m_surface->m_events.destroy.registerListener([this](std::any d) { + m_listeners.surfaceDestroy = m_surface->m_events.destroy.listen([this] { LOGM(WARN, "SessionLockSurface object remains but surface is being destroyed???"); m_surface->unmap(); m_listeners.surfaceCommit.reset(); @@ -61,7 +61,7 @@ CSessionLockSurface::CSessionLockSurface(SP resource_, sendConfigure(); - m_listeners.monitorMode = m_monitor->m_events.modeChanged.registerListener([this](std::any data) { sendConfigure(); }); + m_listeners.monitorMode = m_monitor->m_events.modeChanged.listen([this] { sendConfigure(); }); } CSessionLockSurface::~CSessionLockSurface() { diff --git a/src/protocols/SessionLock.hpp b/src/protocols/SessionLock.hpp index 8f0e0af6..09b48b32 100644 --- a/src/protocols/SessionLock.hpp +++ b/src/protocols/SessionLock.hpp @@ -21,9 +21,9 @@ class CSessionLockSurface { SP surface(); struct { - CSignal map; - CSignal destroy; - CSignal commit; + CSignalT<> map; + CSignalT<> destroy; + CSignalT<> commit; } m_events; private: @@ -54,9 +54,9 @@ class CSessionLock { void sendDenied(); struct { - CSignal newLockSurface; // SP - CSignal unlockAndDestroy; - CSignal destroyed; // fires regardless of whether there was a unlockAndDestroy or not. + CSignalT> newLockSurface; + CSignalT<> unlockAndDestroy; + CSignalT<> destroyed; // fires regardless of whether there was a unlockAndDestroy or not. } m_events; private: @@ -76,7 +76,7 @@ class CSessionLockProtocol : public IWaylandProtocol { bool isLocked(); struct { - CSignal newLock; // SP + CSignalT> newLock; } m_events; private: diff --git a/src/protocols/SinglePixel.cpp b/src/protocols/SinglePixel.cpp index d069da0d..42c4f8ed 100644 --- a/src/protocols/SinglePixel.cpp +++ b/src/protocols/SinglePixel.cpp @@ -69,7 +69,7 @@ CSinglePixelBufferResource::CSinglePixelBufferResource(uint32_t id, wl_client* c m_buffer->m_resource->m_buffer = m_buffer; - m_listeners.bufferResourceDestroy = m_buffer->events.destroy.registerListener([this](std::any d) { + m_listeners.bufferResourceDestroy = m_buffer->events.destroy.listen([this] { m_listeners.bufferResourceDestroy.reset(); PROTO::singlePixel->destroyResource(this); }); diff --git a/src/protocols/TextInputV1.hpp b/src/protocols/TextInputV1.hpp index 5f74bf72..f22dfdfe 100644 --- a/src/protocols/TextInputV1.hpp +++ b/src/protocols/TextInputV1.hpp @@ -33,11 +33,11 @@ class CTextInputV1 { bool m_active = false; struct { - CSignal onCommit; - CSignal enable; - CSignal disable; - CSignal reset; - CSignal destroy; + CSignalT<> onCommit; + CSignalT> enable; + CSignalT<> disable; + CSignalT<> reset; + CSignalT<> destroy; } m_events; struct SPendingSurr { @@ -68,7 +68,7 @@ class CTextInputV1Protocol : public IWaylandProtocol { void destroyResource(CZwpTextInputManagerV1* client); struct { - CSignal newTextInput; // WP + CSignalT> newTextInput; } m_events; private: diff --git a/src/protocols/TextInputV3.hpp b/src/protocols/TextInputV3.hpp index 65d29b7f..420adf53 100644 --- a/src/protocols/TextInputV3.hpp +++ b/src/protocols/TextInputV3.hpp @@ -27,11 +27,11 @@ class CTextInputV3 { wl_client* client(); struct { - CSignal onCommit; - CSignal enable; - CSignal disable; - CSignal reset; - CSignal destroy; + CSignalT<> onCommit; + CSignalT<> enable; + CSignalT<> disable; + CSignalT<> reset; + CSignalT<> destroy; } m_events; struct SState { @@ -80,7 +80,7 @@ class CTextInputV3Protocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newTextInput; // WP + CSignalT> newTextInput; } m_events; private: @@ -97,4 +97,4 @@ class CTextInputV3Protocol : public IWaylandProtocol { namespace PROTO { inline UP textInputV3; -}; \ No newline at end of file +}; diff --git a/src/protocols/Viewporter.cpp b/src/protocols/Viewporter.cpp index f13d7540..06a47382 100644 --- a/src/protocols/Viewporter.cpp +++ b/src/protocols/Viewporter.cpp @@ -55,7 +55,7 @@ CViewportResource::CViewportResource(SP resource_, SPm_pending.viewport.source = {x, y, w, h}; }); - m_listeners.surfacePrecommit = m_surface->m_events.precommit.registerListener([this](std::any d) { + m_listeners.surfacePrecommit = m_surface->m_events.precommit.listen([this] { if (!m_surface || !m_surface->m_pending.buffer) return; diff --git a/src/protocols/VirtualKeyboard.hpp b/src/protocols/VirtualKeyboard.hpp index ad2eccfa..c601c0fb 100644 --- a/src/protocols/VirtualKeyboard.hpp +++ b/src/protocols/VirtualKeyboard.hpp @@ -3,6 +3,8 @@ #include #include #include "WaylandProtocol.hpp" +#include "../devices/IKeyboard.hpp" +#include "../devices/VirtualKeyboard.hpp" #include "virtual-keyboard-unstable-v1.hpp" #include "../helpers/signal/Signal.hpp" #include @@ -13,10 +15,10 @@ class CVirtualKeyboardV1Resource { ~CVirtualKeyboardV1Resource(); struct { - CSignal destroy; - CSignal key; - CSignal modifiers; - CSignal keymap; + CSignalT<> destroy; + CSignalT key; + CSignalT modifiers; + CSignalT keymap; } m_events; bool good(); @@ -41,7 +43,7 @@ class CVirtualKeyboardProtocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newKeyboard; // SP + CSignalT> newKeyboard; } m_events; private: diff --git a/src/protocols/VirtualPointer.cpp b/src/protocols/VirtualPointer.cpp index e40d35f2..c083fc3f 100644 --- a/src/protocols/VirtualPointer.cpp +++ b/src/protocols/VirtualPointer.cpp @@ -148,4 +148,4 @@ void CVirtualPointerProtocol::onCreatePointer(CZwlrVirtualPointerManagerV1* pMgr LOGM(LOG, "New VPointer at id {}", id); m_events.newPointer.emit(RESOURCE); -} \ No newline at end of file +} diff --git a/src/protocols/VirtualPointer.hpp b/src/protocols/VirtualPointer.hpp index a608086a..96f31d81 100644 --- a/src/protocols/VirtualPointer.hpp +++ b/src/protocols/VirtualPointer.hpp @@ -15,23 +15,23 @@ class CVirtualPointerV1Resource { ~CVirtualPointerV1Resource(); struct { - CSignal destroy; - CSignal move; - CSignal warp; - CSignal button; - CSignal axis; - CSignal frame; - - CSignal swipeBegin; - CSignal swipeUpdate; - CSignal swipeEnd; - - CSignal pinchBegin; - CSignal pinchUpdate; - CSignal pinchEnd; - - CSignal holdBegin; - CSignal holdEnd; + CSignalT<> destroy; + CSignalT move; + CSignalT warp; + CSignalT button; + CSignalT axis; + CSignalT<> frame; + + CSignalT swipeBegin; + CSignalT swipeUpdate; + CSignalT swipeEnd; + + CSignalT pinchBegin; + CSignalT pinchUpdate; + CSignalT pinchEnd; + + CSignalT holdBegin; + CSignalT holdEnd; } m_events; bool good(); @@ -56,7 +56,7 @@ class CVirtualPointerProtocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newPointer; // SP + CSignalT> newPointer; } m_events; private: diff --git a/src/protocols/XDGShell.cpp b/src/protocols/XDGShell.cpp index 5351e267..488ff6f1 100644 --- a/src/protocols/XDGShell.cpp +++ b/src/protocols/XDGShell.cpp @@ -372,7 +372,7 @@ CXDGSurfaceResource::CXDGSurfaceResource(SP resource_, SPdestroyResource(this); }); - m_listeners.surfaceDestroy = m_surface->m_events.destroy.registerListener([this](std::any d) { + m_listeners.surfaceDestroy = m_surface->m_events.destroy.listen([this] { LOGM(WARN, "wl_surface destroyed before its xdg_surface role object"); m_listeners.surfaceDestroy.reset(); m_listeners.surfaceCommit.reset(); @@ -385,7 +385,7 @@ CXDGSurfaceResource::CXDGSurfaceResource(SP resource_, SPm_events.commit.registerListener([this](std::any d) { + m_listeners.surfaceCommit = m_surface->m_events.commit.listen([this] { m_current = m_pending; if (m_toplevel) m_toplevel->m_current = m_toplevel->m_pending; @@ -436,7 +436,7 @@ CXDGSurfaceResource::CXDGSurfaceResource(SP resource_, SP reposition; + CSignalT<> dismissed; + CSignalT<> destroy; // only the role } m_events; // schedules a configure event @@ -111,10 +111,10 @@ class CXDGToplevelResource { void close(); struct { - CSignal sizeLimitsChanged; - CSignal stateChanged; // maximized, fs, minimized, etc. - CSignal metadataChanged; // title, appid - CSignal destroy; // only the role + CSignalT<> sizeLimitsChanged; + CSignalT<> stateChanged; // maximized, fs, minimized, etc. + CSignalT<> metadataChanged; // title, appid + CSignalT<> destroy; // only the role } m_events; struct { @@ -186,12 +186,12 @@ class CXDGSurfaceResource { } m_pending, m_current; struct { - CSignal ack; - CSignal commit; - CSignal map; - CSignal unmap; - CSignal destroy; - CSignal newPopup; // SP + CSignalT ack; + CSignalT<> commit; + CSignalT<> map; + CSignalT<> unmap; + CSignalT<> destroy; + CSignalT> newPopup; } m_events; bool m_initialCommit = true; @@ -252,7 +252,7 @@ class CXDGWMBase { WP m_self; struct { - CSignal pong; + CSignalT<> pong; } m_events; private: diff --git a/src/protocols/XWaylandShell.hpp b/src/protocols/XWaylandShell.hpp index a83f258e..346bfe88 100644 --- a/src/protocols/XWaylandShell.hpp +++ b/src/protocols/XWaylandShell.hpp @@ -17,7 +17,7 @@ class CXWaylandSurfaceResource { wl_client* client(); struct { - CSignal destroy; + CSignalT<> destroy; } events; uint64_t m_serial = 0; @@ -47,7 +47,7 @@ class CXWaylandShellProtocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newSurface; // SP. Fired when it sets a serial, otherwise it's useless + CSignalT> newSurface; // Fired when it sets a serial, otherwise it's useless } m_events; private: diff --git a/src/protocols/core/Compositor.hpp b/src/protocols/core/Compositor.hpp index 90fac35d..26b5a27b 100644 --- a/src/protocols/core/Compositor.hpp +++ b/src/protocols/core/Compositor.hpp @@ -80,12 +80,12 @@ class CWLSurfaceResource { void resetRole(); struct { - CSignal precommit; // before commit - CSignal commit; // after commit - CSignal map; - CSignal unmap; - CSignal newSubsurface; - CSignal destroy; + CSignalT<> precommit; // before commit + CSignalT<> commit; // after commit + CSignalT<> map; + CSignalT<> unmap; + CSignalT> newSubsurface; + CSignalT<> destroy; } m_events; SSurfaceState m_current; @@ -146,7 +146,7 @@ class CWLCompositorProtocol : public IWaylandProtocol { void forEachSurface(std::function)> fn); struct { - CSignal newSurface; // SP + CSignalT> newSurface; } m_events; private: diff --git a/src/protocols/core/DataDevice.cpp b/src/protocols/core/DataDevice.cpp index 730113f1..4435e4c7 100644 --- a/src/protocols/core/DataDevice.cpp +++ b/src/protocols/core/DataDevice.cpp @@ -385,8 +385,8 @@ bool CWLDataDeviceManagerResource::good() { CWLDataDeviceProtocol::CWLDataDeviceProtocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) { g_pEventLoopManager->doLater([this]() { - m_listeners.onKeyboardFocusChange = g_pSeatManager->m_events.keyboardFocusChange.registerListener([this](std::any d) { onKeyboardFocus(); }); - m_listeners.onDndPointerFocusChange = g_pSeatManager->m_events.dndPointerFocusChange.registerListener([this](std::any d) { onDndPointerFocus(); }); + m_listeners.onKeyboardFocusChange = g_pSeatManager->m_events.keyboardFocusChange.listen([this] { onKeyboardFocus(); }); + m_listeners.onDndPointerFocusChange = g_pSeatManager->m_events.dndPointerFocusChange.listen([this] { onDndPointerFocus(); }); }); } @@ -564,8 +564,8 @@ void CWLDataDeviceProtocol::initiateDrag(WP currentSource m_dnd.originSurface = origin; m_dnd.dndSurface = dragSurface; if (dragSurface) { - m_dnd.dndSurfaceDestroy = dragSurface->m_events.destroy.registerListener([this](std::any d) { abortDrag(); }); - m_dnd.dndSurfaceCommit = dragSurface->m_events.commit.registerListener([this](std::any d) { + m_dnd.dndSurfaceDestroy = dragSurface->m_events.destroy.listen([this] { abortDrag(); }); + m_dnd.dndSurfaceCommit = dragSurface->m_events.commit.listen([this] { if (m_dnd.dndSurface->m_current.texture && !m_dnd.dndSurface->m_mapped) { m_dnd.dndSurface->map(); return; diff --git a/src/protocols/core/Output.cpp b/src/protocols/core/Output.cpp index a9d75972..8ebf87eb 100644 --- a/src/protocols/core/Output.cpp +++ b/src/protocols/core/Output.cpp @@ -86,7 +86,7 @@ void CWLOutputResource::updateState() { CWLOutputProtocol::CWLOutputProtocol(const wl_interface* iface, const int& ver, const std::string& name, PHLMONITOR pMonitor) : IWaylandProtocol(iface, ver, name), m_monitor(pMonitor), m_name(pMonitor->m_name) { - m_listeners.modeChanged = m_monitor->m_events.modeChanged.registerListener([this](std::any d) { + m_listeners.modeChanged = m_monitor->m_events.modeChanged.listen([this] { for (auto const& o : m_outputs) { o->updateState(); } diff --git a/src/protocols/core/Output.hpp b/src/protocols/core/Output.hpp index 50deccd3..d0c6fb13 100644 --- a/src/protocols/core/Output.hpp +++ b/src/protocols/core/Output.hpp @@ -47,7 +47,7 @@ class CWLOutputProtocol : public IWaylandProtocol { bool isDefunct(); // true if above was called struct { - CSignal outputBound; + CSignalT> outputBound; } m_events; private: diff --git a/src/protocols/core/Seat.cpp b/src/protocols/core/Seat.cpp index c341f95a..53123abe 100644 --- a/src/protocols/core/Seat.cpp +++ b/src/protocols/core/Seat.cpp @@ -32,7 +32,7 @@ void CWLTouchResource::sendDown(SP surface, uint32_t timeMs, ASSERT(surface->client() == m_owner->client()); m_currentSurface = surface; - m_listeners.destroySurface = surface->m_events.destroy.registerListener([this, timeMs, id](std::any d) { sendUp(timeMs + 10 /* hack */, id); }); + m_listeners.destroySurface = surface->m_events.destroy.listen([this, timeMs, id] { sendUp(timeMs + 10 /* hack */, id); }); m_resource->sendDown(g_pSeatManager->nextSerial(m_owner.lock()), timeMs, surface->getResource().get(), id, wl_fixed_from_double(local.x), wl_fixed_from_double(local.y)); @@ -160,7 +160,7 @@ void CWLPointerResource::sendEnter(SP surface, const Vector2 ASSERT(surface->client() == m_owner->client()); m_currentSurface = surface; - m_listeners.destroySurface = surface->m_events.destroy.registerListener([this](std::any d) { sendLeave(); }); + m_listeners.destroySurface = surface->m_events.destroy.listen([this] { sendLeave(); }); m_resource->sendEnter(g_pSeatManager->nextSerial(m_owner.lock()), surface->getResource().get(), wl_fixed_from_double(local.x), wl_fixed_from_double(local.y)); } @@ -349,7 +349,7 @@ void CWLKeyboardResource::sendEnter(SP surface) { ASSERT(surface->client() == m_owner->client()); m_currentSurface = surface; - m_listeners.destroySurface = surface->m_events.destroy.registerListener([this](std::any d) { sendLeave(); }); + m_listeners.destroySurface = surface->m_events.destroy.listen([this] { sendLeave(); }); wl_array arr; wl_array_init(&arr); diff --git a/src/protocols/core/Seat.hpp b/src/protocols/core/Seat.hpp index 35839385..0c14e52a 100644 --- a/src/protocols/core/Seat.hpp +++ b/src/protocols/core/Seat.hpp @@ -142,7 +142,7 @@ class CWLSeatResource { WP m_self; struct { - CSignal destroy; + CSignalT<> destroy; } m_events; private: @@ -157,7 +157,7 @@ class CWLSeatProtocol : public IWaylandProtocol { virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id); struct { - CSignal newSeatResource; // SP + CSignalT> newSeatResource; } m_events; private: diff --git a/src/protocols/core/Shm.cpp b/src/protocols/core/Shm.cpp index 8d610fe0..d73525a6 100644 --- a/src/protocols/core/Shm.cpp +++ b/src/protocols/core/Shm.cpp @@ -24,7 +24,7 @@ CWLSHMBuffer::CWLSHMBuffer(SP pool_, uint32_t id, int32_t of m_resource = CWLBufferResource::create(makeShared(pool_->m_resource->client(), 1, id)); - m_listeners.bufferResourceDestroy = events.destroy.registerListener([this](std::any d) { + m_listeners.bufferResourceDestroy = events.destroy.listen([this] { m_listeners.bufferResourceDestroy.reset(); PROTO::shm->destroyResource(this); }); diff --git a/src/protocols/core/Subcompositor.cpp b/src/protocols/core/Subcompositor.cpp index 71058d25..d18d9fc6 100644 --- a/src/protocols/core/Subcompositor.cpp +++ b/src/protocols/core/Subcompositor.cpp @@ -71,7 +71,7 @@ CWLSubsurfaceResource::CWLSubsurfaceResource(SP resource_, SPm_events.commit.registerListener([this](std::any d) { + m_listeners.commitSurface = m_surface->m_events.commit.listen([this] { if (m_surface->m_current.texture && !m_surface->m_mapped) { m_surface->map(); m_surface->m_events.map.emit(); diff --git a/src/protocols/core/Subcompositor.hpp b/src/protocols/core/Subcompositor.hpp index cf7913ec..45b84eba 100644 --- a/src/protocols/core/Subcompositor.hpp +++ b/src/protocols/core/Subcompositor.hpp @@ -48,7 +48,7 @@ class CWLSubsurfaceResource { int m_zIndex = 1; // by default, it's above struct { - CSignal destroy; + CSignalT<> destroy; } m_events; private: diff --git a/src/protocols/types/Buffer.cpp b/src/protocols/types/Buffer.cpp index 6608d631..86b37be0 100644 --- a/src/protocols/types/Buffer.cpp +++ b/src/protocols/types/Buffer.cpp @@ -36,7 +36,7 @@ void IHLBuffer::onBackendRelease(const std::function& fn) { m_backendReleaseQueuedFn = fn; - m_hlEvents.backendRelease = events.backendRelease.registerListener([this](std::any) { + m_hlEvents.backendRelease = events.backendRelease.listen([this] { if (m_backendReleaseQueuedFn) m_backendReleaseQueuedFn(); m_backendReleaseQueuedFn = nullptr; diff --git a/src/protocols/types/DMABuffer.cpp b/src/protocols/types/DMABuffer.cpp index b1621de7..1f6a1a6b 100644 --- a/src/protocols/types/DMABuffer.cpp +++ b/src/protocols/types/DMABuffer.cpp @@ -15,7 +15,7 @@ using namespace Hyprutils::OS; CDMABuffer::CDMABuffer(uint32_t id, wl_client* client, Aquamarine::SDMABUFAttrs const& attrs_) : m_attrs(attrs_) { g_pHyprRenderer->makeEGLCurrent(); - m_listeners.resourceDestroy = events.destroy.registerListener([this](std::any d) { + m_listeners.resourceDestroy = events.destroy.listen([this] { closeFDs(); m_listeners.resourceDestroy.reset(); }); diff --git a/src/protocols/types/DataDevice.hpp b/src/protocols/types/DataDevice.hpp index 857d818d..9a9579d3 100644 --- a/src/protocols/types/DataDevice.hpp +++ b/src/protocols/types/DataDevice.hpp @@ -41,7 +41,7 @@ class IDataSource { virtual void sendDndAction(wl_data_device_manager_dnd_action a); struct { - CSignal destroy; + CSignalT<> destroy; } m_events; private: -- cgit v1.2.3