summaryrefslogtreecommitdiffstats
path: root/src/server/events/CreatePort.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2017-02-12 15:04:20 +0100
committerDavid Robillard <d@drobilla.net>2017-02-12 15:31:47 +0100
commitb1198f0842e6e4d6b1c01f07d91b42ef4a212788 (patch)
tree93fdf4da89a6f5f634707fb8c989e0d9ee1a3c65 /src/server/events/CreatePort.cpp
parent81d45973412c675e3c0b4a10b64d811a219feeae (diff)
downloadingen-b1198f0842e6e4d6b1c01f07d91b42ef4a212788.tar.gz
ingen-b1198f0842e6e4d6b1c01f07d91b42ef4a212788.tar.bz2
ingen-b1198f0842e6e4d6b1c01f07d91b42ef4a212788.zip
Use smart pointers to handle real-time memory disposal
Diffstat (limited to 'src/server/events/CreatePort.cpp')
-rw-r--r--src/server/events/CreatePort.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/server/events/CreatePort.cpp b/src/server/events/CreatePort.cpp
index bb8bb4d4..b6cabbeb 100644
--- a/src/server/events/CreatePort.cpp
+++ b/src/server/events/CreatePort.cpp
@@ -48,8 +48,6 @@ CreatePort::CreatePort(Engine& engine,
, _buf_type(0)
, _graph(NULL)
, _graph_port(NULL)
- , _ports_array(NULL)
- , _old_ports_array(NULL)
, _engine_port(NULL)
, _properties(properties)
{
@@ -156,8 +154,10 @@ CreatePort::pre_process(PreProcessContext& ctx)
_engine_port = _engine.driver()->create_port(_graph_port);
}
- _ports_array = new Raul::Array<PortImpl*>(old_n_ports + 1, NULL);
- _update = _graph_port->properties();
+ _ports_array = bufs.maid().make_managed<GraphImpl::Ports>(
+ old_n_ports + 1, nullptr);
+
+ _update = _graph_port->properties();
assert(_graph_port->index() == (uint32_t)index_i->second.get<int32_t>());
assert(_graph->num_ports_non_rt() == (uint32_t)old_n_ports + 1);
@@ -171,15 +171,15 @@ void
CreatePort::execute(RunContext& context)
{
if (_status == Status::SUCCESS) {
- _old_ports_array = _graph->external_ports();
- if (_old_ports_array) {
- for (uint32_t i = 0; i < _old_ports_array->size(); ++i) {
- (*_ports_array)[i] = (*_old_ports_array)[i];
+ const MPtr<GraphImpl::Ports>& old_ports = _graph->external_ports();
+ if (old_ports) {
+ for (uint32_t i = 0; i < old_ports->size(); ++i) {
+ (*_ports_array)[i] = (*old_ports)[i];
}
}
assert(!(*_ports_array)[_graph_port->index()]);
(*_ports_array)[_graph_port->index()] = _graph_port;
- _graph->external_ports(_ports_array);
+ _graph->set_external_ports(std::move(_ports_array));
if (_engine_port) {
_engine.driver()->add_port(context, _engine_port);
@@ -194,8 +194,6 @@ CreatePort::post_process()
if (respond() == Status::SUCCESS) {
_engine.broadcaster()->put(Node::path_to_uri(_path), _update);
}
-
- delete _old_ports_array;
}
void