Commit Graph

67 Commits (c6c567cfafc1f9b19e3b7e4123a90811a3cc4aa4)

Author SHA1 Message Date
Andri Yngvason f3e09fd622 Prepare API for multi-display support
These changes are made now to make it possible to add multi-display
support in the future while keeping the public interface stable.
2020-04-12 18:16:19 +00:00
Andri Yngvason 737dd311a0 Remove nvnc_set_dimensions()
This information is now figured out based on the nvnc_fb passed into
nvnc_set_buffer()
2020-04-12 16:08:33 +00:00
Andri Yngvason 297e22b588 Don't render when a client is still encoding 2020-04-10 12:07:35 +00:00
Andri Yngvason 77b866096d Redesign framebuffer update loop
Rendering may now only happen inside the rendering callback. The user is
also allowed to change out the entire buffer in the callback.

The callback is triggered by nvnc_damage_region(), nvnc_damage_whole()
and/or framebuffer update requests.

This fixes #26
2020-04-07 23:35:57 +00:00
Andri Yngvason 048b796ff5 Enable SO_REUSEADDR again 2020-04-06 18:29:17 +00:00
Andri Yngvason 1976221afe Resolve host names in nvnc_open()
This fixes #23
2020-04-04 22:26:00 +00:00
Andri Yngvason 8fc5c18b28 Don't show partial frames to new clients 2020-04-04 14:00:03 +00:00
Andri Yngvason f45f90ed9b nvnc_fb: Add a mechanism for signaling that a frame is in use 2020-04-04 12:33:18 +00:00
Andri Yngvason b0799f7490 server: Add dtrace probe for stream_send inside update_fb_done 2020-04-03 23:11:12 +00:00
Andri Yngvason 25626a9048 tight: Implement quality control 2020-04-03 20:09:26 +00:00
Andri Yngvason 17e0d6036f tight: Implement bare minimum "basic" encoding 2020-04-03 00:18:54 +00:00
Andri Yngvason cfb2abfc58 tight: Prepare for "basic" encoding method 2020-04-02 21:52:04 +00:00
Andri Yngvason 10a3fd6238 Add dtrace probes for framebuffer updates 2020-04-01 22:53:22 +00:00
Andri Yngvason a77eb34fba Spawn as many workers as there are CPU cores 2020-03-21 17:27:30 +00:00
Andri Yngvason 76e721c4cd Replace libuv with aml 2020-03-21 16:59:10 +00:00
Andri Yngvason 7d2b295b4a server: Read messages straight into message buffer
This avoids extra copying and removes a possible error condition that
would cause the connection to be closed
2020-01-25 16:42:10 +00:00
Andri Yngvason 547387f549 server: Close after sending VeNCrypt failure message 2020-01-25 16:04:04 +00:00
Andri Yngvason b30a5516d3 server: Send the proper reason string on security handshake failure 2020-01-25 15:59:04 +00:00
Andri Yngvason 1687b8c701 server: Apply stream API change 2020-01-25 15:52:44 +00:00
Andri Yngvason caf9fe0130 Remove unused code 2020-01-25 15:39:23 +00:00
Andri Yngvason 19e4e42036 Implement VeNCrypt with x509 plain authentication 2020-01-25 15:35:14 +00:00
Andri Yngvason 4ebd60b8cc pixels: Delete useless code 2020-01-24 22:29:29 +00:00
Andri Yngvason a80b314eea server: Set the pixel format for the client if it hasn't specified one 2020-01-19 22:54:52 +00:00
Andri Yngvason 7fa074e60b server: Close client if no frame encoding method is available 2020-01-19 21:27:17 +00:00
Andri Yngvason ebfe4382ee server: Use size_t for encoding indices 2020-01-19 19:17:15 +00:00
Scott Moreau db6c063aea Include sys/param.h for MIN definition
Fixes #11.
2020-01-19 12:00:18 -07:00
Andri Yngvason ad0ff6b27c Make Tight encoding optional 2019-12-31 10:13:21 +00:00
Andri Yngvason ee3f2fefff server: Extract pixel format functions into pixels.c 2019-12-30 20:13:40 +00:00
Andri Yngvason a0376f2fd4 Pass entire client structure to tight encoder 2019-12-30 17:48:22 +00:00
Andri Yngvason d9f80ad196 server: Extract structure definitions into header 2019-12-30 17:22:19 +00:00
Andri Yngvason 8cd33d8a07 Add JPEG Tight encoding 2019-12-30 10:00:15 +00:00
Andri Yngvason 52f5510467 Send a correct reason string when disconnecting due to unsupported security type 2019-12-28 20:50:44 +00:00
Andri Yngvason 00450e0c9d Clean up some memory leaks 2019-12-27 15:07:48 +00:00
Andri Yngvason 875cd5af7b Stop reading from a client as soon as an error occurs on the socket 2019-12-27 13:57:40 +00:00
Andri Yngvason bfb1cd9fc9 Don't buffer up multiple outgoing frames
It's pointless to send multiple frames in a single buffer. It just
overloads the client.
2019-12-23 12:11:00 +00:00
Andri Yngvason 4ebf4623cb Fix read buffer and drop older outgoing frames 2019-12-23 09:33:29 +00:00
Andri Yngvason 80b1f3cb4c Re-format using clang-format 2019-10-20 22:13:51 +00:00
Andri Yngvason 05ff0c1514 Don't send an update that hasn't been requested 2019-10-12 17:29:08 +00:00
Andri Yngvason 6dec7287f7 Tune deflate 2019-10-12 16:42:59 +00:00
Andri Yngvason 007578052c Use Z_BEST_SPEED for ZRLE
The default strategy loads the CPU too much when streaming at 60 FPS.
2019-10-12 15:47:38 +00:00
Andri Yngvason b54bc178f0 Fix decoding of encoding message 2019-10-08 18:12:57 +00:00
Andri Yngvason 9501a1da64 Keep a reference to the framebuffer while it is in a worker. 2019-10-08 17:53:12 +00:00
Andri Yngvason 4beaf88a35 Turn around frame update model
Keeping a framebuffer for clients to request from seems to be a better fit for
the VNC standard.
2019-10-07 20:29:12 +00:00
Andri Yngvason 3196a7a46b Make nvnc_fb opaque 2019-10-07 17:39:54 +00:00
Andri Yngvason 40f16fe63b Add raw encoding
It's useful for debugging
2019-09-19 18:14:26 +00:00
Andri Yngvason 083eaaf20a Make sure that the client object outlives the encoding worker task 2019-09-18 22:16:40 +00:00
Andri Yngvason 8973ce5637 Return error from update when there are no pending clients 2019-09-18 21:21:37 +00:00
Andri Yngvason 7d4af0e741 Encode on worker threads 2019-09-15 21:53:10 +00:00
Andri Yngvason 3ce98968bb Add macros for compatibility with older libdrm 2019-09-10 18:17:45 +00:00
Andri Yngvason 55051310d6 Guard against unsupported pixel formats 2019-09-08 16:48:05 +00:00