core: use new typed signals from hu (#10853)

This commit is contained in:
outfoxxed 2025-07-08 09:56:40 -07:00 committed by GitHub
parent 2f34ef141b
commit 78e9eddfb6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
85 changed files with 667 additions and 865 deletions

View file

@ -69,63 +69,55 @@ CTablet::CTablet(SP<Aquamarine::ITablet> tablet_) : m_tablet(tablet_) {
if (!m_tablet)
return;
m_listeners.destroy = m_tablet->events.destroy.registerListener([this](std::any d) {
m_listeners.destroy = m_tablet->events.destroy.listen([this] {
m_tablet.reset();
m_events.destroy.emit();
});
m_listeners.axis = m_tablet->events.axis.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITablet::SAxisEvent>(d);
m_listeners.axis = m_tablet->events.axis.listen([this](const Aquamarine::ITablet::SAxisEvent& event) {
m_tabletEvents.axis.emit(SAxisEvent{
.tool = E.tool,
.tool = event.tool,
.tablet = m_self.lock(),
.timeMs = E.timeMs,
.updatedAxes = aqUpdateToHl(E.updatedAxes),
.axis = E.absolute,
.axisDelta = E.delta,
.tilt = E.tilt,
.pressure = E.pressure,
.distance = E.distance,
.rotation = E.rotation,
.slider = E.slider,
.wheelDelta = E.wheelDelta,
.timeMs = event.timeMs,
.updatedAxes = aqUpdateToHl(event.updatedAxes),
.axis = event.absolute,
.axisDelta = event.delta,
.tilt = event.tilt,
.pressure = event.pressure,
.distance = event.distance,
.rotation = event.rotation,
.slider = event.slider,
.wheelDelta = event.wheelDelta,
});
});
m_listeners.proximity = m_tablet->events.proximity.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITablet::SProximityEvent>(d);
m_listeners.proximity = m_tablet->events.proximity.listen([this](const Aquamarine::ITablet::SProximityEvent& event) {
m_tabletEvents.proximity.emit(SProximityEvent{
.tool = E.tool,
.tool = event.tool,
.tablet = m_self.lock(),
.timeMs = E.timeMs,
.proximity = E.absolute,
.in = E.in,
.timeMs = event.timeMs,
.proximity = event.absolute,
.in = event.in,
});
});
m_listeners.tip = m_tablet->events.tip.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITablet::STipEvent>(d);
m_listeners.tip = m_tablet->events.tip.listen([this](const Aquamarine::ITablet::STipEvent& event) {
m_tabletEvents.tip.emit(STipEvent{
.tool = E.tool,
.tool = event.tool,
.tablet = m_self.lock(),
.timeMs = E.timeMs,
.tip = E.absolute,
.in = E.down,
.timeMs = event.timeMs,
.tip = event.absolute,
.in = event.down,
});
});
m_listeners.button = m_tablet->events.button.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITablet::SButtonEvent>(d);
m_listeners.button = m_tablet->events.button.listen([this](const Aquamarine::ITablet::SButtonEvent& event) {
m_tabletEvents.button.emit(SButtonEvent{
.tool = E.tool,
.tool = event.tool,
.tablet = m_self.lock(),
.timeMs = E.timeMs,
.button = E.button,
.down = E.down,
.timeMs = event.timeMs,
.button = event.button,
.down = event.down,
});
});
@ -156,48 +148,42 @@ CTabletPad::CTabletPad(SP<Aquamarine::ITabletPad> pad_) : m_pad(pad_) {
if (!m_pad)
return;
m_listeners.destroy = m_pad->events.destroy.registerListener([this](std::any d) {
m_listeners.destroy = m_pad->events.destroy.listen([this] {
m_pad.reset();
m_events.destroy.emit();
});
m_listeners.button = m_pad->events.button.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITabletPad::SButtonEvent>(d);
m_listeners.button = m_pad->events.button.listen([this](const Aquamarine::ITabletPad::SButtonEvent& event) {
m_padEvents.button.emit(SButtonEvent{
.timeMs = E.timeMs,
.button = E.button,
.down = E.down,
.mode = E.mode,
.group = E.group,
.timeMs = event.timeMs,
.button = event.button,
.down = event.down,
.mode = event.mode,
.group = event.group,
});
});
m_listeners.ring = m_pad->events.ring.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITabletPad::SRingEvent>(d);
m_listeners.ring = m_pad->events.ring.listen([this](const Aquamarine::ITabletPad::SRingEvent& event) {
m_padEvents.ring.emit(SRingEvent{
.timeMs = E.timeMs,
.finger = E.source == Aquamarine::ITabletPad::AQ_TABLET_PAD_RING_SOURCE_FINGER,
.ring = E.ring,
.position = E.pos,
.mode = E.mode,
.timeMs = event.timeMs,
.finger = event.source == Aquamarine::ITabletPad::AQ_TABLET_PAD_RING_SOURCE_FINGER,
.ring = event.ring,
.position = event.pos,
.mode = event.mode,
});
});
m_listeners.strip = m_pad->events.strip.registerListener([this](std::any d) {
auto E = std::any_cast<Aquamarine::ITabletPad::SStripEvent>(d);
m_listeners.strip = m_pad->events.strip.listen([this](const Aquamarine::ITabletPad::SStripEvent& event) {
m_padEvents.strip.emit(SStripEvent{
.timeMs = E.timeMs,
.finger = E.source == Aquamarine::ITabletPad::AQ_TABLET_PAD_STRIP_SOURCE_FINGER,
.strip = E.strip,
.position = E.pos,
.mode = E.mode,
.timeMs = event.timeMs,
.finger = event.source == Aquamarine::ITabletPad::AQ_TABLET_PAD_STRIP_SOURCE_FINGER,
.strip = event.strip,
.position = event.pos,
.mode = event.mode,
});
});
m_listeners.attach = m_pad->events.attach.registerListener([](std::any d) {
m_listeners.attach = m_pad->events.attach.listen([] {
; // TODO: this doesn't do anything in aq atm
});
@ -224,7 +210,7 @@ CTabletTool::CTabletTool(SP<Aquamarine::ITabletTool> tool_) : m_tool(tool_) {
if (!m_tool)
return;
m_listeners.destroyTool = m_tool->events.destroy.registerListener([this](std::any d) {
m_listeners.destroyTool = m_tool->events.destroy.listen([this] {
m_tool.reset();
m_events.destroy.emit();
});
@ -265,7 +251,7 @@ void CTabletTool::setSurface(SP<CWLSurfaceResource> surf) {
m_surface = surf;
if (surf) {
m_listeners.destroySurface = surf->m_events.destroy.registerListener([this](std::any d) {
m_listeners.destroySurface = surf->m_events.destroy.listen([this] {
PROTO::tablet->proximityOut(m_self.lock());
m_surface.reset();
m_listeners.destroySurface.reset();