* KASM-5417 fix bug watermrk multi-display
* Force the zlib expected size to an int, it was unexpectedly float
* KASM-5427 transparent rects not drawn on primary display
* add double buffer when transparent rects are used
* refactor of transparent rects
* Use a more descriptive zlib error
* account for dropped transparent rects
* fix bug with multi-monitor with overlay
* implement new transparent rect encoding
* implement a max frame hold time
---------
Co-authored-by: Lauri Kasanen <cand@gmx.com>
Co-authored-by: mattmcclaskey <matt@kasmweb.com>
* Handle the frame id in udp packets
* refactor udp message buffer, add frame_id and rect cnt
* refactor udp to work with new display.js
* additional debug metrics, clear frame buffer on transitions tcp/udp
* fix udp with display refactor, KASM-3541 cancelAnimationFrame
Co-authored-by: Lauri Kasanen <cand@gmx.com>
Co-authored-by: mattmcclaskey <matt@kasmweb.com>
* Major refactor of display.js queue to assume async rect processing in order to accommodate threaded decode or udp
* QOI lossless decoder on worker threads using WASM
* rfb.js class to provide frame_id and rect counts per frame
Co-authored-by: ryan.kuba <ryan.kuba@kasmweb.com>
Co-authored-by: matt <matt@kasmweb.com>
These are very pointless for the server to send, but not a violation of
the protocol so we need to be able to handle them. We've seen this
happen in real world scenarios a few times.
This is what the browser wants so it avoids having to spend time
converting everything. Unfortunately it usually means the server instead
needs to convert it for us, but we assume it has more power than we do.