From 52c970b2d32cce2090efbbaaed6ff50de80958df Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 23 Feb 2008 18:48:59 +0000 Subject: Rearrange event port referencing stuff to make a bit more sense. git-svn-id: http://svn.drobilla.net/lad/patchage@1159 a436a847-0d15-0410-975c-d299462d15a1 --- src/PatchageEvent.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src/PatchageEvent.cpp') diff --git a/src/PatchageEvent.cpp b/src/PatchageEvent.cpp index 3f03208..d123188 100644 --- a/src/PatchageEvent.cpp +++ b/src/PatchageEvent.cpp @@ -22,6 +22,10 @@ #include "PatchageModule.hpp" #include "PatchageEvent.hpp" #include "Driver.hpp" +#include "JackDriver.hpp" +#ifdef HAVE_ALSA +#include "AlsaDriver.hpp" +#endif using namespace std; @@ -49,13 +53,24 @@ PatchageEvent::execute(Patchage* patchage) } else if (_type == PORT_CREATION) { - if ( ! _driver->create_port_view(patchage, _port_1)) { - cerr << "Unable to create port view (already exists?" << endl; + Driver* driver; + if (_port_1.type == PatchageEvent::PortRef::JACK_ID) + driver = patchage->jack_driver(); +#ifdef HAVE_ALSA + else if (_port_1.type == PatchageEvent::PortRef::ALSA_ADDR) + driver = patchage->alsa_driver(); +#endif + + if (driver) { + if ( ! driver->create_port_view(patchage, _port_1)) + cerr << "Unable to create port view (already exists?" << endl; + } else { + cerr << "ERROR: Create port with unknown port type" << endl; } } else if (_type == PORT_DESTRUCTION) { - SharedPtr port = _driver->find_port_view(patchage, _port_1); + SharedPtr port = patchage->canvas()->find_port(_port_1); if (port) { SharedPtr module = PtrCast(port->module().lock()); @@ -78,8 +93,8 @@ PatchageEvent::execute(Patchage* patchage) } else if (_type == CONNECTION) { - SharedPtr port_1 = _driver->find_port_view(patchage, _port_1); - SharedPtr port_2 = _driver->find_port_view(patchage, _port_2); + SharedPtr port_1 = patchage->canvas()->find_port(_port_1); + SharedPtr port_2 = patchage->canvas()->find_port(_port_2); if (port_1 && port_2) patchage->canvas()->add_connection(port_1, port_2, port_1->color() + 0x22222200); @@ -88,8 +103,8 @@ PatchageEvent::execute(Patchage* patchage) } else if (_type == DISCONNECTION) { - SharedPtr port_1 = _driver->find_port_view(patchage, _port_1); - SharedPtr port_2 = _driver->find_port_view(patchage, _port_2); + SharedPtr port_1 = patchage->canvas()->find_port(_port_1); + SharedPtr port_2 = patchage->canvas()->find_port(_port_2); if (port_1 && port_2) patchage->canvas()->remove_connection(port_1, port_2); -- cgit v1.2.1