From 6bb3c48972d172fec244afae08a905e2246d9cda Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 8 Mar 2019 06:50:14 +0100 Subject: Use smart pointers over manual memory management --- src/server/events/CreateGraph.cpp | 26 +++++++++----------------- src/server/events/CreateGraph.hpp | 17 ++++++++--------- src/server/events/Delete.cpp | 7 ++++--- src/server/events/Delete.hpp | 2 +- src/server/events/Delta.cpp | 36 ++++++++++++++---------------------- src/server/events/Delta.hpp | 4 ++-- src/server/events/Disconnect.cpp | 14 ++++---------- src/server/events/Disconnect.hpp | 4 +--- 8 files changed, 43 insertions(+), 67 deletions(-) (limited to 'src/server/events') diff --git a/src/server/events/CreateGraph.cpp b/src/server/events/CreateGraph.cpp index bd7079d9..5bb66a46 100644 --- a/src/server/events/CreateGraph.cpp +++ b/src/server/events/CreateGraph.cpp @@ -44,13 +44,6 @@ CreateGraph::CreateGraph(Engine& engine, , _parent(nullptr) {} -CreateGraph::~CreateGraph() -{ - for (Event* ev : _child_events) { - delete ev; - } -} - void CreateGraph::build_child_events() { @@ -76,10 +69,9 @@ CreateGraph::build_child_events() Resource::Graph::EXTERNAL); _child_events.push_back( - new events::CreatePort( - _engine, _request_client, -1, _time, - _path.child(Raul::Symbol("control")), - in_properties)); + make_unique(_engine, _request_client, -1, _time, + _path.child(Raul::Symbol("control")), + in_properties)); // Add notify port (message respond) Properties out_properties(control_properties); @@ -92,9 +84,9 @@ CreateGraph::build_child_events() Resource::Graph::EXTERNAL); _child_events.push_back( - new events::CreatePort(_engine, _request_client, -1, _time, - _path.child(Raul::Symbol("notify")), - out_properties)); + make_unique(_engine, _request_client, -1, _time, + _path.child(Raul::Symbol("notify")), + out_properties)); } bool @@ -184,7 +176,7 @@ CreateGraph::pre_process(PreProcessContext& ctx) // Build and pre-process child events to create standard ports build_child_events(); - for (Event* ev : _child_events) { + for (const auto& ev : _child_events) { ev->pre_process(ctx); } @@ -204,7 +196,7 @@ CreateGraph::execute(RunContext& context) _graph->enable(); } - for (Event* ev : _child_events) { + for (const auto& ev : _child_events) { ev->execute(context); } } @@ -219,7 +211,7 @@ CreateGraph::post_process() } if (_graph) { - for (Event* ev : _child_events) { + for (const auto& ev : _child_events) { ev->post_process(); } } diff --git a/src/server/events/CreateGraph.hpp b/src/server/events/CreateGraph.hpp index 1537283e..565a3278 100644 --- a/src/server/events/CreateGraph.hpp +++ b/src/server/events/CreateGraph.hpp @@ -20,6 +20,7 @@ #include #include "ingen/Resource.hpp" +#include "ingen/types.hpp" #include "CompiledGraph.hpp" #include "Event.hpp" @@ -46,8 +47,6 @@ public: const Raul::Path& path, const Properties& properties); - ~CreateGraph(); - bool pre_process(PreProcessContext& ctx) override; void execute(RunContext& context) override; void post_process() override; @@ -58,13 +57,13 @@ public: private: void build_child_events(); - const Raul::Path _path; - Properties _properties; - ClientUpdate _update; - GraphImpl* _graph; - GraphImpl* _parent; - MPtr _compiled_graph; - std::list _child_events; + const Raul::Path _path; + Properties _properties; + ClientUpdate _update; + GraphImpl* _graph; + GraphImpl* _parent; + MPtr _compiled_graph; + std::list> _child_events; }; } // namespace events diff --git a/src/server/events/Delete.cpp b/src/server/events/Delete.cpp index 4e1aa69b..f6168c9c 100644 --- a/src/server/events/Delete.cpp +++ b/src/server/events/Delete.cpp @@ -51,7 +51,6 @@ Delete::Delete(Engine& engine, Delete::~Delete() { - delete _disconnect_event; for (ControlBindings::Binding* b : _removed_bindings) { delete b; } @@ -92,12 +91,14 @@ Delete::pre_process(PreProcessContext& ctx) if (_block) { parent->remove_block(*_block); - _disconnect_event = new DisconnectAll(_engine, parent, _block.get()); + _disconnect_event = + make_unique(_engine, parent, _block.get()); _disconnect_event->pre_process(ctx); _compiled_graph = ctx.maybe_compile(*_engine.maid(), *parent); } else if (_port) { parent->remove_port(*_port); - _disconnect_event = new DisconnectAll(_engine, parent, _port.get()); + _disconnect_event = + make_unique(_engine, parent, _port.get()); _disconnect_event->pre_process(ctx); _compiled_graph = ctx.maybe_compile(*_engine.maid(), *parent); diff --git a/src/server/events/Delete.hpp b/src/server/events/Delete.hpp index 4b0c314b..4925a856 100644 --- a/src/server/events/Delete.hpp +++ b/src/server/events/Delete.hpp @@ -72,7 +72,7 @@ private: EnginePort* _engine_port; MPtr _ports_array; ///< New (external) ports for Graph MPtr _compiled_graph; ///< Graph's new process order - DisconnectAll* _disconnect_event; + UPtr _disconnect_event; Store::Objects _removed_objects; IndexChanges _port_index_changes; diff --git a/src/server/events/Delta.cpp b/src/server/events/Delta.cpp index da957fd3..efc50bce 100644 --- a/src/server/events/Delta.cpp +++ b/src/server/events/Delta.cpp @@ -84,7 +84,6 @@ Delta::Delta(Engine& engine, SampleCount timestamp, const ingen::SetProperty& msg) : Event(engine, client, msg.seq, timestamp) - , _create_event(nullptr) , _subject(msg.subject) , _properties{{msg.predicate, msg.value}} , _object(nullptr) @@ -100,11 +99,6 @@ Delta::Delta(Engine& engine, Delta::~Delta() { - for (auto& s : _set_events) { - delete s; - } - - delete _create_event; } void @@ -137,11 +131,10 @@ Delta::add_set_event(const char* port_symbol, return; } - SetPortValue* ev = new SetPortValue( - _engine, _request_client, _request_id, _time, - port, Atom(size, type, value), false, true); - - _set_events.push_back(ev); + _set_events.emplace_back( + make_unique( + _engine, _request_client, _request_id, _time, + port, Atom(size, type, value), false, true)); } static void @@ -232,13 +225,13 @@ Delta::pre_process(PreProcessContext& ctx) ingen::Resource::type(uris, _properties, is_graph, is_block, is_port, is_output); if (is_graph) { - _create_event = new CreateGraph( + _create_event = make_unique( _engine, _request_client, _request_id, _time, path, _properties); } else if (is_block) { - _create_event = new CreateBlock( + _create_event = make_unique( _engine, _request_client, _request_id, _time, path, _properties); } else if (is_port) { - _create_event = new CreatePort( + _create_event = make_unique( _engine, _request_client, _request_id, _time, path, _properties); } @@ -333,10 +326,10 @@ Delta::pre_process(PreProcessContext& ctx) _status = Status::BAD_VALUE_TYPE; } } else if (key == uris.ingen_value || key == uris.ingen_activity) { - SetPortValue* ev = new SetPortValue( - _engine, _request_client, _request_id, _time, port, value, - key == uris.ingen_activity); - _set_events.push_back(ev); + _set_events.emplace_back( + make_unique( + _engine, _request_client, _request_id, _time, + port, value, key == uris.ingen_activity)); } else if (key == uris.midi_binding) { if (port->is_a(PortType::CONTROL) || port->is_a(PortType::CV)) { if (value == uris.patch_wildcard) { @@ -444,12 +437,11 @@ Delta::pre_process(PreProcessContext& ctx) LilvNode* bundle = get_file_node(lworld, uris, value); if (bundle) { lilv_world_load_bundle(lworld, bundle); - const std::set new_plugins = - _engine.block_factory()->refresh(); + const auto new_plugins = _engine.block_factory()->refresh(); - for (PluginImpl* p : new_plugins) { + for (const auto& p : new_plugins) { if (p->bundle_uri() == lilv_node_as_string(bundle)) { - _update.put_plugin(p); + _update.put_plugin(p.get()); } } lilv_node_free(bundle); diff --git a/src/server/events/Delta.hpp b/src/server/events/Delta.hpp index d36e81aa..0fda067a 100644 --- a/src/server/events/Delta.hpp +++ b/src/server/events/Delta.hpp @@ -96,11 +96,11 @@ private: LOADED_BUNDLE }; - typedef std::vector SetEvents; + typedef std::vector> SetEvents; void init(); - Event* _create_event; + UPtr _create_event; SetEvents _set_events; std::vector _types; std::vector _remove_types; diff --git a/src/server/events/Disconnect.cpp b/src/server/events/Disconnect.cpp index e803ce3d..3abf23e4 100644 --- a/src/server/events/Disconnect.cpp +++ b/src/server/events/Disconnect.cpp @@ -44,15 +44,9 @@ Disconnect::Disconnect(Engine& engine, : Event(engine, client, msg.seq, timestamp) , _msg(msg) , _graph(nullptr) - , _impl(nullptr) { } -Disconnect::~Disconnect() -{ - delete _impl; -} - Disconnect::Impl::Impl(Engine& e, GraphImpl* graph, PortImpl* t, @@ -154,10 +148,10 @@ Disconnect::pre_process(PreProcessContext& ctx) return Event::pre_process_done(Status::PARENT_NOT_FOUND, _msg.head); } - _impl = new Impl(_engine, - _graph, - dynamic_cast(tail), - dynamic_cast(head)); + _impl = make_unique(_engine, + _graph, + dynamic_cast(tail), + dynamic_cast(head)); _compiled_graph = ctx.maybe_compile(*_engine.maid(), *_graph); diff --git a/src/server/events/Disconnect.hpp b/src/server/events/Disconnect.hpp index de4bfe57..566a7721 100644 --- a/src/server/events/Disconnect.hpp +++ b/src/server/events/Disconnect.hpp @@ -49,8 +49,6 @@ public: SampleCount timestamp, const ingen::Disconnect& msg); - ~Disconnect(); - bool pre_process(PreProcessContext& ctx) override; void execute(RunContext& context) override; void post_process() override; @@ -76,7 +74,7 @@ public: private: const ingen::Disconnect _msg; GraphImpl* _graph; - Impl* _impl; + UPtr _impl; MPtr _compiled_graph; }; -- cgit v1.2.1