Commit Graph

110 Commits (4eb7a3a5595f27f8631d0361c8724eaec19007b5)

Author SHA1 Message Date
Andri Yngvason 8bde568112 server: Add dtrace probes with pts 2022-06-26 13:57:32 +00:00
Andri Yngvason e6a12ffda7 server: Promote some log levels 2022-06-25 16:32:05 +00:00
Andri Yngvason ad4a834cfc Use new logging system 2022-06-25 16:15:32 +00:00
Jan Beich da290abc25 server: consistently use builtin byteswap after 53f88894d5
src/server.c:48:10: fatal error: 'byteswap.h' file not found
 #include <byteswap.h>
          ^~~~~~~~~~~~
2022-04-24 17:56:03 +00:00
Andri Yngvason 53f88894d5 Add presentation timestamps 2022-04-14 18:10:09 +00:00
Andri Yngvason 3ea068b90c server: Decrement n_pending_requests after dispathing encoding job
The request is as good as handled at that point. We don't want to squeeze
in another frame that the client didn't request before the encoding job
finishes. That would cause a negative pending count and the client would
stop getting updates.
2022-04-03 20:52:24 +00:00
Andri Yngvason aca09358ea Add back damage argument to nvnc_set_cursor
It's better to keep feeding buffers to keep buffers in rotation for damage
tracking purposes.
2022-02-21 21:43:41 +00:00
Andri Yngvason 9c02e6afaf Implement hiding cursors 2022-02-20 14:48:24 +00:00
Andri Yngvason 1553c88f5e Add width and height arguments to nvnc_set_cursor 2022-02-19 23:06:15 +00:00
Andri Yngvason 48baf74560 Implement client side cursor rendering 2022-02-06 16:33:46 +00:00
Andri Yngvason c5a5437a9e server: Keep a count of clients that use damage 2021-12-26 13:10:41 +00:00
Andri Yngvason 90f61f03c6 Plug open h264 2021-12-26 13:10:41 +00:00
Andri Yngvason 65c0e91c37 Move update header out of encoders 2021-12-12 16:05:29 +00:00
Andri Yngvason a7241658b0 Create encoder abstraction 2021-12-11 21:03:18 +00:00
Andri Yngvason 1b7b51af44 Add a cleanup callback to nvnc_set_userdata 2021-09-04 21:21:23 +00:00
Andri Yngvason 41c9ebe960 server: process fb update requests in fb update request message handler
Otherwise, the client won't get the initial frame
2021-09-04 21:21:23 +00:00
Andri Yngvason f566105ab5 Remove nvnc_set_render_fn 2021-09-04 21:21:23 +00:00
Andri Yngvason d63feadeab Notify the user when an fb is released 2021-09-04 21:21:23 +00:00
Ryan Farley b320723049 Support UNIX sockets
Adds support for UNIX domain sockets with `nvnc_open_unix()` function.
Closes #1.
2021-04-04 20:24:33 +00:00
Andri Yngvason 1359b987a3 Translate XT keycodes to linux keycodes 2020-11-29 20:48:31 +00:00
Andri Yngvason f547ed72f9 Decrement pending requests when sending pseudo frames 2020-11-29 18:36:48 +00:00
Andri Yngvason ea98af75de Notify client about qemu key capability 2020-11-29 18:36:48 +00:00
Andri Yngvason dbe35bc3ad Add qemu extended key events 2020-11-29 18:36:48 +00:00
Andri Yngvason e69006fc48 tight: Hold fb and client refs while encoding 2020-09-27 17:17:22 +00:00
Andri Yngvason af38a643d9 tight: Don't block 1 worker while encoding tiles 2020-09-27 12:37:00 +00:00
Andri Yngvason 9e84000e0a server: Extract finish_fb_update() from on_client_update_fb_done() 2020-09-26 22:29:02 +00:00
Andri Yngvason add8d8e8db server: Move pixel format conversion out of do_client_update_fb 2020-09-26 22:17:02 +00:00
Andri Yngvason 7e2b4fef8c server: Refactor schedule_client_update_fb 2020-09-26 22:00:53 +00:00
Scott Moreau 81a8ba9d0e server: Handle cut text messages of up to 10MB 2020-09-25 21:47:59 +00:00
Scott Moreau 783807c0b9 server: Fix possible crash on fragmented packet messages
The packets sent from the client especially for client cut text,
are typically sent in two packets, one for the message containing
the type and length and the other for the actual data. Sometimes
the first message is read but we still don't have the data yet.
We need to continue reading data to use the structure but this
revealed a bug. The client event handler was calling memmove()
with buffer_index as the size argument. This meant that it was
copying the wrong amount of data, resulting in garbage at the
end of the expected data. This patch fixes the problem by first
subtracting buffer_index from buffer_len and then moving buffer_len
worth of data, which is what was read into msg_buffer. The problem
possibly manifested itself with random crashes, after reading
random data.
2020-09-21 21:15:45 +00:00
Scott Moreau 6d29937e15 server: Add remaining support for simple copy/paste
- Add function to set callback for client_cut_text
- Add server_cut_text structure and function

This in conjunction with wayvnc #66 closes #4.
2020-09-21 21:15:45 +00:00
Andri Yngvason addcc50483 Bake version info into library 2020-07-26 11:43:29 +00:00
Andri Yngvason b52f5cd6c9 Resize tight encoder on frame resize 2020-07-19 16:58:55 +00:00
Andri Yngvason a0801f04e4 Implement server-side resizing 2020-07-19 11:54:39 +00:00
Andri Yngvason eb4b9d71a4 Return failure if display buffer is not set in on_connect 2020-07-18 14:04:12 +00:00
Andri Yngvason 683776cdf0 server: Assert that a client has a stream open when processing a message 2020-07-16 18:14:52 +00:00
Andri Yngvason 33eda8c5d0 Always enable tight, encoding but allow disabling lossy tight encoding 2020-07-11 20:16:27 +00:00
Andri Yngvason 497f9adb29 tight: Re-implement with threads 2020-07-11 20:06:45 +00:00
Andri Yngvason 9b54f6d936 Clean up dispatch hander on exit 2020-07-06 16:43:53 +00:00
Andri Yngvason 7fb2215c0f Use raw encoding by default if no encoding has been selected
This complies with the standard.
2020-05-31 22:56:27 +00:00
Andri Yngvason 569ad287c5 Fix version error handling 2020-05-29 20:18:05 +00:00
Stefan Agner d2527e57f0 fix build warnings when building without tls
Fix trivial build warnings when building without TLS support.
2020-05-22 20:54:53 +00:00
Stefan Agner 8316994dfa use static for functions not used outside this compile unit
Add static for all functions only used inside the individual compile
units. This helps the compiler to potentially inline these functions.

This allows to use neatvnc as a Meson subproject in Weston which has
-Wmissing-prototypes enabled by default.
2020-05-21 17:44:31 +00:00
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