diff options
author | Len Ovens <len@ovenwerks.net> | 2017-05-11 20:46:16 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2017-05-12 07:29:29 -0700 |
commit | 774ebc42e3d14f3b4ca318cf75124b9ac00e160e (patch) | |
tree | bbde5fb4ce832eb9c05bbb36abb26c9851b6bf6c /libs/surfaces/osc/osc.h | |
parent | eb3f50e15c9f9ed1880c59fecd6f8b3edcc05820 (diff) |
OSC: Create new surface struct for ALL incoming messages
Diffstat (limited to 'libs/surfaces/osc/osc.h')
-rw-r--r-- | libs/surfaces/osc/osc.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index eeadcf2c6c..902e0e73d6 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -217,6 +217,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest> std::string get_unix_server_url (); lo_address get_address (lo_message msg); OSCSurface * get_surface (lo_address addr); + int check_surface (lo_message msg); uint32_t get_sid (boost::shared_ptr<ARDOUR::Stripable> strip, lo_address addr); boost::shared_ptr<ARDOUR::Stripable> get_strip (uint32_t ssid, lo_address addr); void global_feedback (std::bitset<32> feedback, lo_address addr, uint32_t gainmode); @@ -285,8 +286,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest> static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ return static_cast<OSC*>(user_data)->cb_ ## name (path, types, argv, argc, data); \ } \ - int cb_ ## name (const char *path, const char *types, lo_arg ** argv, int argc, void *) { \ + int cb_ ## name (const char *path, const char *types, lo_arg ** argv, int argc, void *data) { \ OSC_DEBUG; \ + check_surface (data); \ if (argc > 0 && !strcmp (types, "f") && argv[0]->f != 1.0) { return 0; } \ name (); \ return 0; \ @@ -352,8 +354,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest> static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ return static_cast<OSC*>(user_data)->cb_ ## name (path, types, argv, argc, data); \ } \ - int cb_ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *) { \ + int cb_ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data) { \ OSC_DEBUG; \ + check_surface (data); \ if (argc > 0) { \ name (optional argv[0]->type); \ } \ @@ -427,8 +430,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest> static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ return static_cast<OSC*>(user_data)->cb_ ## name (path, types, argv, argc, data); \ } \ - int cb_ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *) { \ + int cb_ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data) { \ OSC_DEBUG; \ + check_surface (data); \ if (argc > 1) { \ name (argv[0]->arg1type, argv[1]->arg2type); \ } \ |