Commit Graph

327 Commits (9639740bc87a5fec43f12fe8ae3d47344c598f70)

Author SHA1 Message Date
Antonin Décimo 41f30bf7ca Fix use-after-free in error path 2020-10-01 09:57:14 +00:00
Andri Yngvason 4a098e27f9 Don't init data_control if it's not supported by compositor 2020-09-22 20:08:10 +00:00
Andri Yngvason 30295bb715 data-control: Destroy data device on exit 2020-09-22 20:01:11 +00:00
Andri Yngvason 5c30d7752c data-control: Clean up whole receive context in aml_free_fn
This takes care of the case where wayvnc exits before the whole offer
has been processed.
2020-09-22 19:53:05 +00:00
Andri Yngvason 9a2f761a02 data-control: Don't free data-control-manager twice 2020-09-22 19:37:35 +00:00
Andri Yngvason 630e2e67bc data-control: Make offer handling asynchronous 2020-09-22 03:12:46 -06:00
Scott Moreau 3ee9aac35e Add basic clipboard support
Uses wlr-data-control-unstable-v1 protocol to interface with the clipboard
making copy/paste of text to/from host clipboard possible.
2020-09-22 03:11:03 -06:00
Andri Yngvason 8038e65597 Clean up aml on nvnc init failure 2020-08-23 13:25:45 +00:00
Andri Yngvason dcf3b5869c Clean up config on exit 2020-08-23 13:18:47 +00:00
Andri Yngvason 7ef8d0b0ae Exit if enabling auth fails 2020-08-23 13:10:59 +00:00
Andri Yngvason 69d36dd7ef buffer: Fix buffer attribute comparison 2020-07-28 17:32:14 +00:00
Jan Beich 72dd8a159c shm: guard fallback on FreeBSD < 13 as well
../src/shm.c:35:13: warning: unused function 'randname' [-Wunused-function]
static void randname(char *buf)
            ^
2020-07-27 20:04:42 +00:00
Jan Beich 6916780389 buffer: guard gbm.h after 3742dc7144
../src/buffer.c:25:10: fatal error: 'gbm.h' file not found
 #include <gbm.h>
          ^~~~~~~
2020-07-27 19:51:59 +00:00
Andri Yngvason 3742dc7144 Add build option for enabling screencopy-dmabuf 2020-07-26 15:12:14 +00:00
Andri Yngvason ca069ea738 buffer: Add function to get available buffer types 2020-07-26 14:26:58 +00:00
Andri Yngvason f8344fda16 main: Suppress unused variable warnings in release build 2020-07-26 13:47:40 +00:00
Andri Yngvason ef6756d0f4 keyboard: suppress unused variable warnings in release build 2020-07-26 13:47:20 +00:00
Andri Yngvason 8ff47ee559 Add a way to learn the version of wayvnc and its dependencies 2020-07-26 11:49:02 +00:00
Andri Yngvason c53ab3bbf5 Report average damaged area per frame in performance ticker 2020-07-25 22:51:37 +00:00
Andri Yngvason 0be56b2100 Add documentation for performance counters 2020-07-25 22:21:48 +00:00
Andri Yngvason c8ba15c455 Add performance counters 2020-07-25 22:17:13 +00:00
Andri Yngvason 85fca04e27 Resize buffers on modeset 2020-07-19 14:38:35 +00:00
Andri Yngvason 4a5838c180 screencopy: Release front buffer on screencopy_stop() 2020-07-19 14:37:48 +00:00
Andri Yngvason c79eb98e68 output: Add callbacks for change notification 2020-07-19 13:56:10 +00:00
Andri Yngvason f9b3d98f83 pixels: Fix endian macros, take 3 2020-07-18 09:23:42 +00:00
Andri Yngvason bed4b7261e screencopy: Disable linux-dmabuf code path
I need to iron out some kinks before it's made the default
2020-07-17 16:27:46 +00:00
Andri Yngvason 0c86f9cf53 screencopy: Don't delay if time_left == 0 2020-07-17 16:22:17 +00:00
Andri Yngvason ce86f51699 screencopy: Fix pixel format of shm buffers 2020-07-16 18:10:12 +00:00
Andri Yngvason 14768ca6e3 pixels: Add function to convert from wl_shm format to fourcc 2020-07-16 18:09:18 +00:00
Andri Yngvason fbd8020778 pixels: Fix more endienness macros 2020-07-16 17:46:44 +00:00
Jan Beich 1bc095bd75 pixels: detect endianness via compiler defines
../src/pixels.c:24:10: fatal error: 'endian.h' file not found
 #include <endian.h>
          ^~~~~~~~~~
../src/pixels.c:58:6: error: expected value in expression
 #elif
      ^
2020-07-16 14:34:56 +00:00
Andri Yngvason 2cb9f663a0 Align with aml API changes 2020-07-11 21:33:02 +00:00
Andri Yngvason 184ed0a7ef Allow the user to adjust the FPS limit 2020-07-11 20:53:31 +00:00
Andri Yngvason 73ade6b84e Add dtrace probes for rendering and damage checking 2020-07-11 20:53:31 +00:00
Andri Yngvason e5272618ba Destroy wl_registry on exit 2020-07-11 20:53:31 +00:00
Andri Yngvason 0268b52c53 Use native pixel format 2020-07-11 20:53:31 +00:00
Andri Yngvason c0f1036f97 pixels: Add more formats and take into account endianness 2020-07-11 20:53:31 +00:00
Andri Yngvason ef74911298 Exit on mode change intead of crashing 2020-07-11 20:53:31 +00:00
Andri Yngvason 9d2e22b9bd pixels: Add copyright notice 2020-07-11 20:53:31 +00:00
Andri Yngvason 9a9c7c8be6 buffer: Cleanup dmabuf params after use 2020-07-11 20:53:31 +00:00
Andri Yngvason 1406ce1cf8 Clean up damage refinery on exit 2020-07-11 20:53:31 +00:00
Andri Yngvason cd7594320b Clean up gbm device on exit 2020-07-11 20:53:31 +00:00
Andri Yngvason 4c14c11de4 transform-util: Add copyright notice 2020-07-11 20:53:31 +00:00
Andri Yngvason b8df02838e pixman-renderer: Add copyright notice 2020-07-11 20:53:31 +00:00
Andri Yngvason ee3b6d74cf buffer: Add copyright notice 2020-07-11 20:53:31 +00:00
Andri Yngvason 7b6372ef49 damage-refinery: Add copyright notice 2020-07-11 20:53:31 +00:00
Andri Yngvason 843368c993 screencopy: Actually use y-inversion flag 2020-07-11 20:53:31 +00:00
Andri Yngvason 46fdbfb109 screencopy: Set the rate limit to 30 Hz 2020-07-11 20:53:31 +00:00
Andri Yngvason 2b522ee596 Remove frame-capture abstraction 2020-07-11 20:53:31 +00:00
Andri Yngvason b0ec79acf8 Move damage hints into buffer abstraction 2020-07-11 20:53:31 +00:00
Andri Yngvason 0615cd44c6 buffer: Add damage field 2020-07-11 20:53:31 +00:00
Andri Yngvason 0edaded063 Remove dead code 2020-07-11 20:53:30 +00:00
Andri Yngvason 84c57a7333 buffer: Fix pool release/acquire 2020-07-11 20:52:01 +00:00
Andri Yngvason f68bb825e1 buffer: Fix error check and use non-linear 2020-07-11 20:52:01 +00:00
Andri Yngvason 0178dd8a39 screencopy: map dmabuf after it's ready 2020-07-11 20:52:01 +00:00
Andri Yngvason 19eb9af7e5 buffer: Unmap before release/destroy 2020-07-11 20:52:01 +00:00
Andri Yngvason 3fc07f571d screencopy: Use linux-dmabuf if available 2020-07-11 20:52:01 +00:00
Andri Yngvason 70216b5829 main: Add gbm and linux-dmabuf 2020-07-11 20:52:01 +00:00
Andri Yngvason 4a21939b43 buffer: Use create_immed 2020-07-11 20:52:01 +00:00
Andri Yngvason 4fa019d31f buffer: Add DMA-BUFs 2020-07-11 20:52:01 +00:00
Andri Yngvason 9b136c90de buffer: Add specific handling for different buffers 2020-07-11 20:52:01 +00:00
Andri Yngvason 480392e40c buffer: Add buffer type to interface 2020-07-11 20:52:01 +00:00
Andri Yngvason 59cc119d76 main: Refine damage hints 2020-07-11 20:52:01 +00:00
Andri Yngvason fe590f3940 damage-refinery: Use damage hint 2020-07-11 20:52:01 +00:00
Andri Yngvason e398dcc235 damage-refinery: Hash directly instead of copying 2020-07-11 20:52:01 +00:00
Andri Yngvason 439d3997d4 damage-refinery: Use negative stride to handle y-inversion 2020-07-11 20:52:01 +00:00
Andri Yngvason c515a29951 Create hash based damage checker 2020-07-11 20:52:01 +00:00
Andri Yngvason 946ace1760 Fix damage transform 2020-07-11 20:52:01 +00:00
Andri Yngvason 12555bea13 pixman-renderer: Use negative stride for y-inversion 2020-07-11 20:52:01 +00:00
Andri Yngvason 1cafc25655 Transform damage coordinates 2020-07-11 20:52:01 +00:00
Andri Yngvason 6b1dc2e6c3 Add utilities for managing output transforms 2020-07-11 20:52:01 +00:00
Andri Yngvason 507b76dfbd Create pixman renderer 2020-07-11 20:52:01 +00:00
Andri Yngvason 29f1669d55 buffer: Leave pixman out of buffers 2020-07-11 20:52:01 +00:00
Andri Yngvason e65cae43c2 Extract pixel format conversion into own file 2020-07-11 20:52:01 +00:00
Andri Yngvason a6e1ba25ea Render using pixman 2020-07-11 20:52:00 +00:00
Andri Yngvason 4fb472f611 Create a buffer abstraction 2020-07-11 20:52:00 +00:00
Andri Yngvason 0a139a1ac4 Align with aml API changes 2020-07-06 16:46:30 +00:00
Andri Yngvason 4f1bca55c3 Exit when main selected seat/output goes away 2020-06-12 23:15:22 +00:00
Andri Yngvason 041ac60ef6 renderer: Add more error messages 2020-06-10 22:09:22 +00:00
Andri Yngvason ff882b7774 keyboard: Ignore shift level on modifiers 2020-05-26 22:19:48 +00:00
Andri Yngvason ff1223e4f9 keyboard: Fix comparison of signed and unsigned value 2020-05-18 20:38:48 +00:00
Andri Yngvason 9b48290d09 Improve error handling in wayland dispatch 2020-05-10 12:21:10 +00:00
Andri Yngvason 151e916752 renderer: Set GL_PACK_ALIGNMENT to 1
Otherwise row stride will multiple of 4, even for damage data.
2020-05-10 12:21:10 +00:00
Andri Yngvason 0761a5b818 damage: Fix uninitialised value 2020-05-10 12:21:10 +00:00
Andri Yngvason 4f5933c07f dmabuf: Limit rate to 30 FPS 2020-05-03 19:58:50 +00:00
Andri Yngvason f5453ffe1e keyboard: Relax matching criteria on shift level
Clients behave differently when it comes to sending release events for keys,
so it's hard to rely on any one kind of behaviour.
2020-05-01 17:34:22 +00:00
Andri Yngvason 405268fc58 keyboard: Log keyboard symbol lookup errors 2020-05-01 17:19:14 +00:00
Andri Yngvason 6e889211db renderer: Run glFinish() before glReadPixels() 2020-04-26 14:15:57 +00:00
Andri Yngvason 8cc8c198d2 renderer: Run glFinish() after rendering dmabuf frame 2020-04-26 14:14:06 +00:00
Andri Yngvason 06a249897b dmabuf: Show a debug message when frames are held for too long. 2020-04-26 14:14:06 +00:00
Andri Yngvason 04569b01f2 dmabuf: Add dtrace probes 2020-04-26 11:24:29 +00:00
Andri Yngvason 9d6310cb14 dmabuf: Remove rate limiting 2020-04-26 10:39:58 +00:00
Andri Yngvason 6becbacbe5 Align with NeatVNC interface changes 2020-04-12 21:46:48 +00:00
Andri Yngvason 1fc664a014 Remove call to nvnc_set_dimensions() 2020-04-12 16:14:18 +00:00
Andri Yngvason f9deca5c9c shm: Add copyright notice
Putting a proper license on this to appease package maintainers.
2020-04-12 13:08:42 +00:00
Greg V 3f62295214 keyboard: rename keymap_len to keymap_size 2020-04-09 15:39:09 +03:00
Greg V fa49aca45a keyboard: check that write finished writing everything
(Use loop to write until the end)
2020-04-09 15:38:13 +03:00
Greg V ccc582cd58 keyboard: allocate shm with *actually* correct size
strlen returns "the number of characters that precede the terminating NUL".
We do need to send the \0 byte, since xkbcommon on the receiving end
*is* expecting a C string. And e.g. wlroots does strlen+1.
2020-04-09 15:37:18 +03:00
Andri Yngvason 14d62d0029 Fix transformations
This fixes #29
2020-04-09 11:50:48 +00:00
Andri Yngvason 58a181ccbc Redesign update/rendering loop
Every change to the framebuffer is now copied into a single buffer
inside a single callback. This simplifies things a lot, and might even
perform better.
2020-04-07 23:37:31 +00:00
Greg V d610076614 shm: support memfd and SHM_ANON 2020-04-06 02:07:25 +03:00
Greg V 720b127dee keyboard: allocate shm with correct size
This was working on Linux because shm_open there returns a regular file,
but this is required on FreeBSD where shm_open returns a memory-backed fd.
2020-04-06 00:26:22 +03:00
Andri Yngvason be401b5e4a Report error when binding to address fails
This fixes #21
2020-04-04 22:38:23 +00:00
Andri Yngvason 6e521a07a0 Merge frames rather than dropping them when encoder is too slow 2020-04-04 21:03:49 +00:00
Andri Yngvason 238c196e6b Capture a new frame immediately when a client requests a whole frame 2020-04-04 15:01:38 +00:00
Andri Yngvason ee4917f200 Make sure that frames being written to are not in use by the encoder 2020-04-04 13:14:07 +00:00
Andri Yngvason 8ce312e9eb renderer: Add dtrace probes 2020-04-02 00:55:18 +00:00
Andri Yngvason 075680994e screencopy: Add dtrace probes 2020-04-02 00:34:00 +00:00
Andri Yngvason dc7adf8f3b renderer: Use ATTR_INDEX_ constants for glEnableVertex* 2020-03-29 14:05:33 +00:00
Andri Yngvason e85f219aff Make sure damage buffer is properly aligned 2020-03-29 13:09:28 +00:00
Andri Yngvason b14a0b854b Rotate NeatVNC framebuffers rather than allocating new ones 2020-03-28 19:23:03 +00:00
Andri Yngvason 2bb17c8215 Blit the whole frame when a new client connects 2020-03-28 15:20:59 +00:00
Andri Yngvason e7586e8753 Only copy the damaged region from GPU 2020-03-28 15:05:04 +00:00
Andri Yngvason 1ebd9a7647 damage: Respect frame boundaries 2020-03-28 14:34:12 +00:00
Andri Yngvason b6ca7aff8c Join process_frame() and update_vnc() 2020-03-28 14:09:29 +00:00
Andri Yngvason bfbc81bf04 Use GPU damage checker 2020-03-28 13:07:33 +00:00
Andri Yngvason 52c18ffe23 damage: Add asynchronous damage checking 2020-03-28 13:05:59 +00:00
Andri Yngvason 7f5431d922 Move rendering calls into frame-capture 2020-03-28 11:44:40 +00:00
Andri Yngvason c91816f247 Implement damage buffer conversion 2020-03-28 10:59:21 +00:00
Andri Yngvason b0a6b6bd2a renderer: Swap FPOs rather than textures 2020-03-28 10:59:21 +00:00
Andri Yngvason ae90348ece renderer: Save previous rendered frame rather than previous imported frame
We can't keep dmabufs very long.
2020-03-26 21:43:35 +00:00
Andri Yngvason b5f1ff0898 renderer: Render to texture 2020-03-26 18:49:37 +00:00
Andri Yngvason 7e709c23e9 renderer: Add damage renderer 2020-03-25 23:21:11 +00:00
Andri Yngvason 6536cbd56f renderer: Add damage shaders 2020-03-25 23:21:11 +00:00
Andri Yngvason 557f0f365b renderer: Set up texture bindings on render() 2020-03-25 21:27:57 +00:00
Andri Yngvason a8fd0d6765 renderer: Show error when linking shaders fails 2020-03-25 21:07:36 +00:00
Andri Yngvason 996729f9bb renderer: Show error message when shader compilation failse 2020-03-25 20:44:54 +00:00
Andri Yngvason 13216fa507 renderer: Add u_tex1 to shaders 2020-03-25 20:26:15 +00:00
Andri Yngvason 49c584f80d renderer: Move shader setup into render() 2020-03-24 22:57:02 +00:00
Andri Yngvason 4da96d0dc1 renderer: Split buffer import and rendering 2020-03-24 22:48:13 +00:00
Andri Yngvason 9d058c85ce Renderer: Keep last texture 2020-03-24 22:07:49 +00:00
Andri Yngvason b39e7535ee renderer: Use FBO instead of pbuffer
This is in preperation for damage checking on the GPU
2020-03-24 19:17:23 +00:00
Andri Yngvason a12ce12ba6 Exit when compositor goes away 2020-03-22 20:29:13 +00:00
Andri Yngvason 26cef852b6 Replace libuv with aml 2020-03-21 16:46:10 +00:00
Andri Yngvason 7ea17d04aa Apply output transformation to pointer coordinates 2020-03-07 14:19:02 +00:00
Andri Yngvason e8279e57f5 Apply output transform to damage hint coordinates 2020-03-07 14:15:09 +00:00
Andri Yngvason 8ff7128714 output: Add coordinate transformations 2020-03-07 14:13:59 +00:00
Andri Yngvason 433ee722ec render: Implement rest of transforms 2020-03-07 12:16:01 +00:00
Andri Yngvason c32993d87d Use transformed geometry for frame buffers 2020-03-05 22:05:14 +00:00
Andri Yngvason 9642e086d8 render: Set glViewport based on output transform 2020-03-05 22:05:14 +00:00
Andri Yngvason e01f75bfbd output: Add functions to get transformed geometry 2020-03-05 22:05:14 +00:00
Andri Yngvason 35ffc2dac7 output: Add transform 2020-03-05 22:05:14 +00:00
Andri Yngvason a3d4189a0b render: Add output transforms 2020-03-05 22:05:14 +00:00
Andri Yngvason a327a2f6dd render: Add 2D projections 2020-03-05 18:46:27 +00:00
Andri Yngvason 1bf618a098 render: Fetch uniform locations in one place 2020-03-05 18:20:54 +00:00
Andri Yngvason 6b3b448405 render: Move shader_program into shader struct 2020-03-05 18:14:50 +00:00
Andri Yngvason 1e6c89d9a9 output: Use non-scaled geometry
This fixes #16
2020-03-04 21:40:33 +00:00
Andri Yngvason a70a2b1bc4 pointer: Remove output position from coordinates
This is no longer required as the input is mapped to the output in the
compositor.
2020-02-21 23:28:36 +00:00
Andri Yngvason 10e5c08752 Map input to the selected output 2020-02-21 23:28:33 +00:00
Dan Shick 4ad4c712b2 Fix shader path, meson doesn't include trailing slash in prefix 2020-02-11 18:41:59 -05:00