13
0
Commit Graph

84 Commits

Author SHA1 Message Date
Luciano Iam
c32a5917f3
WS: handle strips and plugins removal 2020-08-30 19:29:27 +02:00
Luciano Iam
a8f917e7e2
WS: prepare for handling object disconnections
Use maps instead of vectors for holding strips and plugins
This allows to deal with "holes" after objects are removed

Also paves the way for a future improved way of identifying
individual strips and plugins
2020-08-30 19:29:27 +02:00
Luciano Iam
7521d8ab6f
WS: add some meaningful error messages 2020-08-30 19:29:27 +02:00
Luciano Iam
3509fe1589
WS: use an object-oriented internal API for the mixer
- This allows to better handle strips & plugins connection lifecycles
- Coherent with the JS client design
2020-08-30 19:29:27 +02:00
Luciano Iam
4a4734fbb1
WebSockets: properly release strips and plugins when removed
This should fix some crashes reported by the beta testing team
2020-08-30 19:29:27 +02:00
dfe2270c9f
Revert "WebSockets: properly release strips and plugins when removed"
This reverts commit f007ba6b46.
2020-08-19 23:59:38 +02:00
Luciano Iam
f007ba6b46
WebSockets: properly release strips and plugins when removed
This should fix some crashes reported by the beta testing team
2020-08-19 19:01:18 +02:00
Luciano Iam
e7e4fb3a81
WS: Use Ardour native scale for pan knobs 2020-07-21 06:49:28 +02:00
23feb0491e
Remove using std::min/max from header 2020-06-18 01:05:48 +02:00
Luciano Iam
8ff4bcfd68
WebSockets: improve JS client message handling code 2020-06-10 19:47:37 +02:00
Luciano Iam
a26a9018fd
WebSockets: code refactor
Terminology used by server and client was starting to diverge.

C++ classes ArdourStrips and ArdourGlobals classes have been
renamed to ArdourMixer and ArdourTransport respectively.

State node values for transport functionality have been simplified
and prefixed with 'transport_' to match what was done for strips.
2020-06-10 19:47:37 +02:00
Luciano Iam
ae4df127ad
WebSockets: implement a JavaScript object-oriented client API
Replace previous callback based basic client with an easier
to use object-oriented API that further abstracts the low level
details of the WebSockets Server surface messaging protocol.

All built-in web surface demos were updated to use the new API.
2020-06-10 19:47:37 +02:00
5296ed141f
Fix support for older libwebsocket versions
LWS_WITH_EXTERNAL_POLL a new optional define for libwebsocket 4.x.
Earlier versions always supported it, without the compile-time define.

This fixes support for libwesocket 2.x (Debian, Ubuntu), and 3.x.
Also for Windows, LWS_WITH_GLIB is not available.
2020-06-10 15:58:47 +02:00
Luciano Iam
e253302c62
WebSockets: allow compilation with lws < 2.1.0
Old libwebsockets does not define lws_callback_http_dummy()
Conditionally use custom code instead
2020-05-28 18:56:21 +02:00
Luciano Iam
3840264edd
WebSockets: remove usage of lws constant LLL_USER
It is not available on lws 2 and really not needed
2020-05-28 18:56:21 +02:00
Luciano Iam
c3d72625cd
WebSockets: leverage LWS_WITH_GLIB 2020-05-28 18:56:21 +02:00
Luciano Iam
85d1aa30d5
WebSockets: comment out a lws_callback case that made clients hang 2020-05-28 18:56:21 +02:00
Luciano Iam
7554655616
WebSockets: improve libwebsockets 4 compatibility
After upgrading from lws 3 to 4 clients could still connect to the surface but no data was sent from the server.
2020-05-28 18:56:21 +02:00
Luciano Iam
6e5aeb57b3
WebSockets: fix LWS_WITH_EXTERNAL_POLL check 2020-05-28 18:56:20 +02:00
Luciano Iam
ea16fc51d3
WebSockets: fix guard header in json.h 2020-04-22 21:59:35 +02:00
Luciano Iam
dbb26daafa
WebSockets: also json-escape strings in state messages 2020-04-22 21:59:35 +02:00
Luciano Iam
946094b25c
WebSockets: also json-escape paths in manifests
Extends 3c423d9
2020-04-22 21:59:35 +02:00
Luciano Iam
c362605b49
WebSockets: add some TO DO comments 2020-04-22 21:59:35 +02:00
Luciano Iam
8b65b0a961
WebSockets: disable http caching if NDEBUG is set
This is useful while developing web surface javascript code
2020-04-22 21:59:35 +02:00
Luciano Iam
ff7b7fe6a7
WebSockets: fix a comment in server.cc 2020-04-22 21:59:34 +02:00
Luciano Iam
80dc3a38e0 WebSockets: let clients know if a strip is a VCA
This allows to hide the panner for example
2020-04-21 16:20:24 +02:00
Luciano Iam
68463cb591 WebSockets: add checks for VCA stripables
Also include VCAs when sending strip descriptions
2020-04-21 15:53:27 +02:00
Luciano Iam
cc08a2d945 WebSockets: compatibility fixes for Windows
Escape path strings in surfaces.json
Default to index.html in mount points
2020-04-21 15:53:27 +02:00
Luciano Iam
d5c2af1cfb
WebSockets: NOOP fix comment in manifest.cc 2020-04-20 22:59:17 +02:00
Luciano Iam
3c423d9265
WebSockets: json-escape user strings loaded from manifest.xml 2020-04-20 22:59:17 +02:00
Luciano Iam
4f2fdb10a3
WebSockets: send caching headers for static resources 2020-04-20 22:59:16 +02:00
Luciano Iam
7118eff7eb
WebSockets: transport surface implementation 2020-04-20 22:59:16 +02:00
Luciano Iam
dc97bf3ff0
WebSockets: output position time in seconds 2020-04-20 22:59:16 +02:00
Luciano Iam
bfbb15011c
WebSockets: add record state support to surface 2020-04-20 22:59:15 +02:00
Luciano Iam
5105219076
WebSockets: rename *_desc nodes to *_description 2020-04-20 22:59:15 +02:00
Luciano Iam
0e664b1556
WebSockets: add transport roll support to surface 2020-04-20 22:59:15 +02:00
c32fef2660
WebSockets: hotfix crash when a session has VCAs
This eventually needs a better solution, special casing VCAs
on the top-level.
2020-04-19 15:44:39 +02:00
Luciano Iam
137042f80c
WebSockets: rename _lws_mnt_index to _lws_mnt_root
This mount point not only serves the index but everything that is under
/ , including the built-in surfaces directory
2020-04-17 20:15:10 +02:00
Luciano Iam
36a27b8a90
WebSockets: prevent crashes by validating inbound message addr and val sizes 2020-04-17 20:15:10 +02:00
Luciano Iam
50ba8dea96
WebSockets: improve JS client and demo
add methods to callback.js
automatically reconnect js client on disconnection
mixer-demo do not recreate UI on reconnection
NO-OP: indentation in message.js
make client JS reconnection optional
fix mixer-demo scrolling
minor JS client refactor
improve mixer-demo readability
2020-04-17 20:15:10 +02:00
Luciano Iam
612c71aa25
WebSockets: allow serving SVG files using libwebsockets < 3 2020-04-17 20:15:10 +02:00
Luciano Iam
30c8563a6d
WebSockets: rename send_index_* to send_availsurf_* to avoid confusion with a static index page 2020-04-13 16:29:38 +02:00
Luciano Iam
e7f22cf989
WebSockets: rename resource index.json to more meaningful surfaces.json 2020-04-13 16:29:38 +02:00
Luciano Iam
17cbd65603
WebSockets: rename all occurrences of 'disk path' to 'filesystem path' 2020-04-13 16:29:38 +02:00
Luciano Iam
1b4deb11ec
WebSockets: use canonical paths in index.json 2020-04-13 16:29:38 +02:00
Luciano Iam
46d39a9ee7
WebSockets: reject an empty ARDOUR_WEBSURFACES_PATH 2020-04-13 16:29:38 +02:00
Luciano Iam
b66b2858b1
WebSockets: add version field in manifests and update loader 2020-04-13 16:29:37 +02:00
Luciano Iam
9aef431818
WebSockets: move diskPath property to surfaces group object 2020-04-11 22:30:41 +02:00
Luciano Iam
ad363d12a2
WebSockets: fix path field in index.json 2020-04-11 22:30:41 +02:00
Luciano Iam
e82171ea19
WebSockets: improve surface manifest format and loader 2020-04-11 22:30:40 +02:00