summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorLuciano Iam <lucianito@gmail.com>2020-02-22 13:50:24 +0100
committerRobin Gareus <robin@gareus.org>2020-02-22 23:10:24 +0100
commit047b05b86074e67b4742de4634efafd94c2dc0bf (patch)
treed0b6f4e5a55bf7dc98d8be36783b05b21325fdb1 /libs
parentbb448080b6f980e669222cc67dbbc6db9e7fb1fd (diff)
Remove all initializer list usages
Diffstat (limited to 'libs')
-rw-r--r--libs/surfaces/websockets/ardour_websockets.cc6
-rw-r--r--libs/surfaces/websockets/dispatcher.cc130
-rw-r--r--libs/surfaces/websockets/dispatcher.h6
-rw-r--r--libs/surfaces/websockets/feedback.cc2
-rw-r--r--libs/surfaces/websockets/server.cc46
-rw-r--r--libs/surfaces/websockets/server.h3
-rw-r--r--libs/surfaces/websockets/state.h3
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";