diff options
author | Luciano Iam <lucianito@gmail.com> | 2020-02-22 13:50:24 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-02-22 23:10:24 +0100 |
commit | 047b05b86074e67b4742de4634efafd94c2dc0bf (patch) | |
tree | d0b6f4e5a55bf7dc98d8be36783b05b21325fdb1 /libs | |
parent | bb448080b6f980e669222cc67dbbc6db9e7fb1fd (diff) |
Remove all initializer list usages
Diffstat (limited to 'libs')
-rw-r--r-- | libs/surfaces/websockets/ardour_websockets.cc | 6 | ||||
-rw-r--r-- | libs/surfaces/websockets/dispatcher.cc | 130 | ||||
-rw-r--r-- | libs/surfaces/websockets/dispatcher.h | 6 | ||||
-rw-r--r-- | libs/surfaces/websockets/feedback.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/websockets/server.cc | 46 | ||||
-rw-r--r-- | libs/surfaces/websockets/server.h | 3 | ||||
-rw-r--r-- | libs/surfaces/websockets/state.h | 3 |
7 files changed, 136 insertions, 60 deletions
diff --git a/libs/surfaces/websockets/ardour_websockets.cc b/libs/surfaces/websockets/ardour_websockets.cc index 0dd3bea4c2..e02bd84d28 100644 --- a/libs/surfaces/websockets/ardour_websockets.cc +++ b/libs/surfaces/websockets/ardour_websockets.cc @@ -43,7 +43,11 @@ ArdourWebsockets::ArdourWebsockets (Session& s) , _server (*this) , _dispatcher (*this) { - _components = { &_strips, &_globals, &_server, &_feedback, &_dispatcher }; + _components.push_back (&_strips); + _components.push_back (&_globals); + _components.push_back (&_server); + _components.push_back (&_feedback); + _components.push_back (&_dispatcher); } ArdourWebsockets::~ArdourWebsockets () diff --git a/libs/surfaces/websockets/dispatcher.cc b/libs/surfaces/websockets/dispatcher.cc index 80ffaca1a6..8d612bd9b2 100644 --- a/libs/surfaces/websockets/dispatcher.cc +++ b/libs/surfaces/websockets/dispatcher.cc @@ -16,6 +16,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include <boost/assign.hpp> + #include "ardour/plugin_insert.h" #include "dispatcher.h" @@ -24,17 +26,17 @@ using namespace ARDOUR; -#define NODE_METHOD_PAIR(x) { Node::x, &WebsocketsDispatcher::x ## _handler } +#define NODE_METHOD_PAIR(x) (Node::x, &WebsocketsDispatcher::x ## _handler) WebsocketsDispatcher::NodeMethodMap -WebsocketsDispatcher::_node_to_method = { - NODE_METHOD_PAIR(tempo), - NODE_METHOD_PAIR(strip_gain), - NODE_METHOD_PAIR(strip_pan), - NODE_METHOD_PAIR(strip_mute), - NODE_METHOD_PAIR(strip_plugin_enable), +WebsocketsDispatcher::_node_to_method = boost::assign::map_list_of + NODE_METHOD_PAIR(tempo) + NODE_METHOD_PAIR(strip_gain) + NODE_METHOD_PAIR(strip_pan) + NODE_METHOD_PAIR(strip_mute) + NODE_METHOD_PAIR(strip_plugin_enable) NODE_METHOD_PAIR(strip_plugin_param_value) -}; + ; void WebsocketsDispatcher::dispatch (Client client, const NodeStateMessage& msg) @@ -52,7 +54,7 @@ WebsocketsDispatcher::dispatch (Client client, const NodeStateMessage& msg) void WebsocketsDispatcher::update_all_nodes (Client client) { - update (client, Node::tempo, {}, { globals ().tempo () }); + update (client, Node::tempo, globals ().tempo ()); for (uint32_t strip_n = 0; strip_n < strips ().strip_count (); ++strip_n) { boost::shared_ptr<Stripable> strip = strips ().nth_strip (strip_n); @@ -61,10 +63,10 @@ WebsocketsDispatcher::update_all_nodes (Client client) continue; } - update (client, Node::strip_desc, { strip_n }, { strip->name () }); - update (client, Node::strip_gain, { strip_n }, { strips ().strip_gain (strip_n) }); - update (client, Node::strip_pan, { strip_n }, { strips ().strip_pan (strip_n) }); - update (client, Node::strip_mute, { strip_n }, { strips ().strip_mute (strip_n) }); + update (client, Node::strip_desc, strip_n, strip->name ()); + update (client, Node::strip_gain, strip_n, strips ().strip_gain (strip_n)); + update (client, Node::strip_pan, strip_n, strips ().strip_pan (strip_n)); + update (client, Node::strip_mute, strip_n, strips ().strip_mute (strip_n)); for (uint32_t plugin_n = 0 ; ; ++plugin_n) { boost::shared_ptr<PluginInsert> insert = strips () @@ -74,11 +76,11 @@ WebsocketsDispatcher::update_all_nodes (Client client) } boost::shared_ptr<Plugin> plugin = insert->plugin (); - update (client, Node::strip_plugin_desc, { strip_n, plugin_n }, - { static_cast<std::string>(plugin->name ()) }); + update (client, Node::strip_plugin_desc, strip_n, plugin_n, + static_cast<std::string>(plugin->name ())); - update (client, Node::strip_plugin_enable, { strip_n, plugin_n }, - { strips ().strip_plugin_enabled (strip_n, plugin_n) }); + update (client, Node::strip_plugin_enable, strip_n, plugin_n, + strips ().strip_plugin_enabled (strip_n, plugin_n)); for (uint32_t param_n = 0; param_n < plugin->parameter_count (); ++param_n) { boost::shared_ptr<AutomationControl> a_ctrl = @@ -87,23 +89,35 @@ WebsocketsDispatcher::update_all_nodes (Client client) continue; } + AddressVector addr = AddressVector (); + addr.push_back (strip_n); + addr.push_back (plugin_n); + addr.push_back (param_n); + + ValueVector val = ValueVector (); + val.push_back (a_ctrl->name ()); + // possible flags: enumeration, integer_step, logarithmic, sr_dependent, toggled ParameterDescriptor pd = a_ctrl->desc (); if (pd.toggled) { - update (client, Node::strip_plugin_param_desc, { strip_n, plugin_n, param_n }, - { a_ctrl->name (), std::string("b") }); + val.push_back (std::string("b")); } else if (pd.enumeration || pd.integer_step) { - update (client, Node::strip_plugin_param_desc, { strip_n, plugin_n, param_n }, - { a_ctrl->name (), std::string("i"), pd.lower, pd.upper, pd.integer_step }); + val.push_back (std::string("i")); + val.push_back (pd.lower); + val.push_back (pd.upper); + val.push_back (pd.integer_step); } else { - update (client, Node::strip_plugin_param_desc, { strip_n, plugin_n, param_n }, - { a_ctrl->name (), std::string("d"), pd.lower, pd.upper, pd.logarithmic }); + val.push_back (std::string("d")); + val.push_back (pd.lower); + val.push_back (pd.upper); + val.push_back (pd.logarithmic); } + update (client, Node::strip_plugin_param_desc, addr, val); + TypedValue value = strips ().strip_plugin_param_value (strip_n, plugin_n, param_n); - update (client, Node::strip_plugin_param_value, { strip_n, plugin_n, param_n }, - { value }); + update (client, Node::strip_plugin_param_value, strip_n, plugin_n, param_n, value); } } } @@ -115,7 +129,7 @@ WebsocketsDispatcher::tempo_handler (Client client, const NodeStateMessage& msg) if (msg.is_write ()) { globals ().set_tempo (msg.state ().nth_val (0)); } else { - update (client, Node::tempo, {}, { globals ().tempo () }); + update (client, Node::tempo, globals ().tempo ()); } } @@ -127,7 +141,7 @@ WebsocketsDispatcher::strip_gain_handler (Client client, const NodeStateMessage& if (msg.is_write ()) { strips ().set_strip_gain (strip_id, msg.state ().nth_val (0)); } else { - update (client, Node::strip_gain, { strip_id }, { strips ().strip_gain (strip_id) }); + update (client, Node::strip_gain, strip_id, strips ().strip_gain (strip_id)); } } @@ -139,7 +153,7 @@ WebsocketsDispatcher::strip_pan_handler (Client client, const NodeStateMessage& if (msg.is_write ()) { strips ().set_strip_pan (strip_id, msg.state ().nth_val (0)); } else { - update (client, Node::strip_pan, { strip_id }, { strips ().strip_pan(strip_id) }); + update (client, Node::strip_pan, strip_id, strips ().strip_pan(strip_id)); } } @@ -151,7 +165,7 @@ WebsocketsDispatcher::strip_mute_handler (Client client, const NodeStateMessage& if (msg.is_write ()) { strips ().set_strip_mute (strip_id, msg.state ().nth_val (0)); } else { - update (client, Node::strip_mute, { strip_id }, { strips ().strip_mute (strip_id) }); + update (client, Node::strip_mute, strip_id, strips ().strip_mute (strip_id)); } } @@ -164,8 +178,8 @@ WebsocketsDispatcher::strip_plugin_enable_handler (Client client, const NodeStat if (msg.is_write ()) { strips ().set_strip_plugin_enabled (strip_id, plugin_id, msg.state ().nth_val (0)); } else { - update (client, Node::strip_plugin_enable, { strip_id, plugin_id }, - { strips ().strip_plugin_enabled (strip_id, plugin_id) }); + update (client, Node::strip_plugin_enable, strip_id, plugin_id, + strips ().strip_plugin_enabled (strip_id, plugin_id)); } } @@ -181,13 +195,59 @@ WebsocketsDispatcher::strip_plugin_param_value_handler (Client client, const Nod msg.state ().nth_val (0)); } else { TypedValue value = strips ().strip_plugin_param_value (strip_id, plugin_id, param_id); - update (client, Node::strip_plugin_param_value, { strip_id, plugin_id, param_id }, - { value }); + update (client, Node::strip_plugin_param_value, strip_id, plugin_id, param_id, value); + } +} + +void +WebsocketsDispatcher::update (Client client, std::string node, TypedValue val1) +{ + update (client, node, ADDR_NONE, ADDR_NONE, ADDR_NONE, val1); +} + +void +WebsocketsDispatcher::update (Client client, std::string node, uint32_t strip_n, TypedValue val1) +{ + update (client, node, strip_n, ADDR_NONE, ADDR_NONE, val1); +} + +void +WebsocketsDispatcher::update (Client client, std::string node, uint32_t strip_n, uint32_t plugin_n, + TypedValue val1) +{ + update (client, node, strip_n, plugin_n, ADDR_NONE, val1); +} + +void +WebsocketsDispatcher::update (Client client, std::string node, uint32_t strip_n, uint32_t plugin_n, + uint32_t param_n, TypedValue val1) +{ + AddressVector addr = AddressVector (); + + if (strip_n != ADDR_NONE) { + addr.push_back (strip_n); } + + if (plugin_n != ADDR_NONE) { + addr.push_back (plugin_n); + } + + if (param_n != ADDR_NONE) { + addr.push_back (param_n); + } + + ValueVector val = ValueVector (); + + if (!val1.empty ()) { + val.push_back (val1); + } + + update (client, node, addr, val); } void -WebsocketsDispatcher::update (Client client, std::string node, AddressVector addr, ValueVector val) +WebsocketsDispatcher::update (Client client, std::string node, const AddressVector& addr, + const ValueVector& val) { - server ().update_client (client, { node, addr, val }, true); + server ().update_client (client, NodeState (node, addr, val), true); } diff --git a/libs/surfaces/websockets/dispatcher.h b/libs/surfaces/websockets/dispatcher.h index 250369418e..032f6ec9d2 100644 --- a/libs/surfaces/websockets/dispatcher.h +++ b/libs/surfaces/websockets/dispatcher.h @@ -50,7 +50,11 @@ class WebsocketsDispatcher : public SurfaceComponent void strip_plugin_enable_handler (Client, const NodeStateMessage&); void strip_plugin_param_value_handler (Client, const NodeStateMessage&); - void update (Client, std::string, AddressVector, ValueVector); + void update (Client, std::string, TypedValue); + void update (Client, std::string, uint32_t, TypedValue); + void update (Client, std::string, uint32_t, uint32_t, TypedValue); + void update (Client, std::string, uint32_t, uint32_t, uint32_t, TypedValue); + void update (Client, std::string, const AddressVector&, const ValueVector&); }; diff --git a/libs/surfaces/websockets/feedback.cc b/libs/surfaces/websockets/feedback.cc index cf094ddbff..290f3f9268 100644 --- a/libs/surfaces/websockets/feedback.cc +++ b/libs/surfaces/websockets/feedback.cc @@ -29,8 +29,6 @@ using namespace ARDOUR; -#define ADDR_NONE UINT_MAX - struct TempoObserver { void operator() (ArdourFeedback* p) { p->update_all (Node::tempo, p->globals ().tempo ()); diff --git a/libs/surfaces/websockets/server.cc b/libs/surfaces/websockets/server.cc index 178aeca011..7c447bc419 100644 --- a/libs/surfaces/websockets/server.cc +++ b/libs/surfaces/websockets/server.cc @@ -30,20 +30,19 @@ WebsocketsServer::WebsocketsServer (ArdourSurface::ArdourWebsockets& surface) , _lws_context (0) { // keep references to all config for libwebsockets 2 - _lws_proto[0] = { - "lws-ardour", // name - WebsocketsServer::lws_callback, // callback - 0, // per_session_data_size - 0, // rx_buffer_size - 0, // id - 0, // user + lws_protocols proto; + proto.name = "lws-ardour"; + proto.callback = WebsocketsServer::lws_callback; + proto.per_session_data_size = 0; + proto.rx_buffer_size = 0; + proto.id = 0; + proto.user = 0; #if LWS_LIBRARY_VERSION_MAJOR >= 3 - 0 // tx_packet_size + proto.tx_packet_size = 0; #endif - }; - _lws_proto[1] = {}; // sentinel + _lws_proto[0] = proto; + memset (&_lws_proto[1], 0, sizeof(lws_protocols)); - _lws_info = {}; _lws_info.port = WEBSOCKET_LISTEN_PORT; _lws_info.protocols = _lws_proto; _lws_info.uid = -1; @@ -110,7 +109,7 @@ WebsocketsServer::update_client (Client wsi, const NodeState& state, bool force) if (force || !it->second.has_state (state)) { // write to client only if state was updated it->second.update_state (state); - it->second.output_buf ().push_back (NodeStateMessage { state }); + it->second.output_buf ().push_back (NodeStateMessage (state)); lws_callback_on_writable (wsi); } } @@ -134,7 +133,7 @@ WebsocketsServer::add_poll_fd (struct lws_pollargs *pa) #else RefPtr<IOChannel> g_channel = IOChannel::create_from_fd (fd); #endif - RefPtr<IOSource> rg_iosrc { IOSource::create (g_channel, events_to_ioc (pa->events)) }; + RefPtr<IOSource> rg_iosrc (IOSource::create (g_channel, events_to_ioc (pa->events))); rg_iosrc->connect (sigc::bind (sigc::mem_fun (*this, &WebsocketsServer::io_handler), fd)); rg_iosrc->attach (main_loop ()->get_context ()); @@ -142,7 +141,14 @@ WebsocketsServer::add_poll_fd (struct lws_pollargs *pa) lws_pfd.fd = pa->fd; lws_pfd.events = pa->events; lws_pfd.revents = 0; - _fd_ctx[fd] = LwsPollFdGlibSource { lws_pfd, g_channel, rg_iosrc, { } }; + + LwsPollFdGlibSource ctx; + ctx.lws_pfd = lws_pfd; + ctx.g_channel = g_channel; + ctx.rg_iosrc = rg_iosrc; + ctx.wg_iosrc = Glib::RefPtr<Glib::IOSource>(0); + + _fd_ctx[fd] = ctx; } void @@ -166,14 +172,14 @@ WebsocketsServer::mod_poll_fd (struct lws_pollargs *pa) return; } - RefPtr<IOSource> wg_iosrc = it->second.g_channel->create_watch (IOCondition::IO_OUT); + RefPtr<IOSource> wg_iosrc = it->second.g_channel->create_watch (Glib::IO_OUT); wg_iosrc->connect (sigc::bind (sigc::mem_fun (*this, &WebsocketsServer::io_handler), pa->fd)); wg_iosrc->attach (main_loop ()->get_context ()); it->second.wg_iosrc = wg_iosrc; } else { if (it->second.wg_iosrc) { it->second.wg_iosrc->destroy (); - it->second.wg_iosrc = { }; + it->second.wg_iosrc = Glib::RefPtr<Glib::IOSource>(0); } } } @@ -198,7 +204,7 @@ WebsocketsServer::del_poll_fd (struct lws_pollargs *pa) void WebsocketsServer::add_client (Client wsi) { - _client_ctx.emplace (wsi, ClientContext { wsi }); + _client_ctx.emplace (wsi, ClientContext (wsi)); dispatcher ().update_all_nodes (wsi); // send all state } @@ -214,7 +220,7 @@ WebsocketsServer::del_client (Client wsi) void WebsocketsServer::recv_client (Client wsi, void *buf, size_t len) { - NodeStateMessage msg { buf, len }; + NodeStateMessage msg (buf, len); if (!msg.is_valid ()) { return; } @@ -270,7 +276,7 @@ WebsocketsServer::write_client (Client wsi) } bool -WebsocketsServer::io_handler (Glib::IOCondition ioc, lws_sockfd_type fd) +WebsocketsServer::io_handler (IOCondition ioc, lws_sockfd_type fd) { // IO_IN=1, IO_PRI=2, IO_ERR=8, IO_HUP=16 //printf ("io_handler ioc = %d\n", ioc); @@ -293,7 +299,7 @@ WebsocketsServer::io_handler (Glib::IOCondition ioc, lws_sockfd_type fd) IOCondition WebsocketsServer::events_to_ioc (int events) { - IOCondition ioc = { }; + IOCondition ioc; if (events & POLLIN) { ioc |= IO_IN; diff --git a/libs/surfaces/websockets/server.h b/libs/surfaces/websockets/server.h index 462b4887f3..0831b59edc 100644 --- a/libs/surfaces/websockets/server.h +++ b/libs/surfaces/websockets/server.h @@ -19,8 +19,9 @@ #ifndef websockets_server_h #define websockets_server_h -#include <boost/unordered_map.hpp> +#include <glibmm.h> #include <libwebsockets.h> +#include <boost/unordered_map.hpp> #if LWS_LIBRARY_VERSION_MAJOR < 3 // <libwebsockets.h> includes <uv.h> which in turn includes diff --git a/libs/surfaces/websockets/state.h b/libs/surfaces/websockets/state.h index e556cbdd54..0c1762c41b 100644 --- a/libs/surfaces/websockets/state.h +++ b/libs/surfaces/websockets/state.h @@ -20,12 +20,15 @@ #define node_state_h #include <stdint.h> +#include <climits> #include <cmath> #include <cstring> #include <vector> #include "typed_value.h" +#define ADDR_NONE UINT_MAX + namespace Node { const std::string tempo = "tempo"; const std::string strip_desc = "strip_desc"; |