diff options
author | David Robillard <d@drobilla.net> | 2020-11-28 14:54:25 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-11-28 14:54:25 +0100 |
commit | e3f3f3586411136e5b7f61cc1726bbc0635deddd (patch) | |
tree | 3c75bfc269d665f4d4e8247a30a5c0cee277d58a /src/AlsaDriver.cpp | |
parent | 445702fdd90f83abfb1ea7bcdbb1d3605c2236c3 (diff) | |
download | patchage-e3f3f3586411136e5b7f61cc1726bbc0635deddd.tar.gz patchage-e3f3f3586411136e5b7f61cc1726bbc0635deddd.tar.bz2 patchage-e3f3f3586411136e5b7f61cc1726bbc0635deddd.zip |
Make PatchageEvent a variant
Diffstat (limited to 'src/AlsaDriver.cpp')
-rw-r--r-- | src/AlsaDriver.cpp | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/AlsaDriver.cpp b/src/AlsaDriver.cpp index 89ef94e..3ef466d 100644 --- a/src/AlsaDriver.cpp +++ b/src/AlsaDriver.cpp @@ -564,19 +564,17 @@ AlsaDriver::_refresh_main() case SND_SEQ_EVENT_PORT_SUBSCRIBED: if (!ignore(ev->data.connect.sender) && !ignore(ev->data.connect.dest)) { - _events.push( - PatchageEvent(PatchageEvent::Type::connection, - addr_to_id(ev->data.connect.sender, false), - addr_to_id(ev->data.connect.dest, true))); + _events.emplace( + ConnectionEvent{addr_to_id(ev->data.connect.sender, false), + addr_to_id(ev->data.connect.dest, true)}); } break; case SND_SEQ_EVENT_PORT_UNSUBSCRIBED: if (!ignore(ev->data.connect.sender) && !ignore(ev->data.connect.dest)) { - _events.push( - PatchageEvent(PatchageEvent::Type::disconnection, - addr_to_id(ev->data.connect.sender, false), - addr_to_id(ev->data.connect.dest, true))); + _events.emplace(DisconnectionEvent{ + addr_to_id(ev->data.connect.sender, false), + addr_to_id(ev->data.connect.dest, true)}); } break; case SND_SEQ_EVENT_PORT_START: @@ -586,21 +584,18 @@ AlsaDriver::_refresh_main() caps = snd_seq_port_info_get_capability(pinfo); if (!ignore(ev->data.addr)) { - _events.push(PatchageEvent( - PatchageEvent::Type::port_creation, - addr_to_id(ev->data.addr, (caps & SND_SEQ_PORT_CAP_READ)))); + _events.emplace(PortCreationEvent{ + addr_to_id(ev->data.addr, (caps & SND_SEQ_PORT_CAP_READ))}); } break; case SND_SEQ_EVENT_PORT_EXIT: if (!ignore(ev->data.addr, false)) { // Note: getting caps at this point does not work // Delete both inputs and outputs (to handle duplex ports) - _events.push( - PatchageEvent(PatchageEvent::Type::port_destruction, - addr_to_id(ev->data.addr, true))); - _events.push( - PatchageEvent(PatchageEvent::Type::port_destruction, - addr_to_id(ev->data.addr, false))); + _events.emplace( + PortDestructionEvent{addr_to_id(ev->data.addr, true)}); + _events.emplace( + PortDestructionEvent{addr_to_id(ev->data.addr, false)}); _port_addrs.erase(_app->canvas()->find_port( addr_to_id(ev->data.addr, false))); @@ -627,7 +622,7 @@ AlsaDriver::process_events(Patchage* app) while (!_events.empty()) { PatchageEvent& ev = _events.front(); - ev.execute(app); + handle_event(*app, ev); _events.pop(); } } |