Commit Graph

98 Commits

Author SHA1 Message Date
Matt McClaskey 5a3b4f0d69
Bugfix/kasm 5601 display mgr changes (#97)
* KASM-5598 modify click logic to tell other windows they can receive a click event

* KASM-5598 dont run the rest of the switch on click focus set

* KASM-5598 forgot to false

* fix detection of changes of x and y of secondary screens

* always apply resize after recieving display reregister

---------

Co-authored-by: ryan.kuba <ryan.kuba@kasmweb.com>
Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2024-02-08 16:05:08 -05:00
Matt McClaskey 933d5b7505
KASM-5563 limit secondary screen rect buffer size (#95)
Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2024-02-01 18:23:50 -05:00
Matt McClaskey 7919f6c750
KASM-5456 null channel bugfix (#94)
* KASM-5456 fix null channel potential

* remove debugging line

---------

Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2024-02-01 09:53:43 -05:00
Matt McClaskey 4c6127b47b
KASM-5523 change resize settings if admin prohibited on server (#93)
* KASM-5523 change resize settings if admin prohibited on server

* Fix local scaling aspect ratio

* fix exception on reconnect

* Always recalculate resolution on setting changes

---------

Co-authored-by: mattmcclaskey <matt@kasmweb.com>
2024-01-30 11:48:23 -05:00
Matt McClaskey 4825e12f62
Bugfix/kasm 5453 serverside fixed resolutions 2 (#90)
* fix serverside fixed resolutions

* refactor of multi-monitor screen planning

* KASM-5488 mouse up fix

* Fixed display manager not getting updates on primary scren size, static size fixes

* fix phantom screen

* fix mouse off on secondary screen when scaled

* fix scaling off

* fix exception on setting static resolution

* completely disable client set static resolution on secondary displays

---------

Co-authored-by: mattmcclaskey <matt@kasmweb.com>
Co-authored-by: Chris Hunt <chris.hunt@kasmweb.com>
2024-01-26 11:09:56 -05:00
Matt McClaskey f6c1d8c668
fix scaling on static resolutions (#87)
Co-authored-by: matt <matt@kasmweb.com>
2024-01-17 10:45:46 -05:00
Matt McClaskey d590bb931a
Bugfix/kasm 5417 watermark multi mon (#85)
* 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
2024-01-17 10:44:20 -05:00
matt 7cca8f5475 KASM-5409 unique control channel per session 2024-01-05 09:05:40 -05:00
mattmcclaskey 9fbea8cd83
requestAnimationFrame only when frames are ready 2023-11-14 09:50:47 -05:00
mattmcclaskey 66355143a9
fix secondary resize, fix small screens auto pixel ratio 2023-10-31 07:15:40 -04:00
mattmcclaskey b9f5ce3953
revert previous changes, cleanup 2023-10-26 08:20:13 -04:00
mattmcclaskey 80b9af1e32
fix scroll on primary, fix artifacting on connect, allow force draw of old frames 2023-10-23 09:21:50 -04:00
mattmcclaskey 05ddc91382
handle window moved to diffent monitor 2023-10-11 09:27:04 -04:00
mattmcclaskey 19e8e924c2
Fix native resolution on hdpi screens 2023-10-11 06:27:14 -04:00
mattmcclaskey 0f4979bcc5
several fixes 2023-10-05 13:30:37 -04:00
mattmcclaskey 70faacff85
smashed a frame dropping bug 2023-10-05 09:19:00 -04:00
mattmcclaskey 56a2e2dec9
add syncronous frames for secondary display 2023-10-05 07:51:50 -04:00
mattmcclaskey f243b54ac9
fix bugs in async frame sync 2023-10-05 06:02:33 -04:00
mattmcclaskey aef462ce62
refactor to support any number of displays in any orientation 2023-09-20 15:18:08 -04:00
mattmcclaskey 23076cdc7c
unregister a display if window closes 2023-09-20 09:06:27 -04:00
mattmcclaskey c35b8c68f3
Added support for all orientations and offsets 2023-09-20 08:17:05 -04:00
mattmcclaskey cb1bc7f787
wired up mouse, keyboard, clipboard on second display 2023-09-20 05:33:40 -04:00
mattmcclaskey 05735088b7
WIP - lots of fixes 2023-09-13 05:44:54 -04:00
mattmcclaskey 96001175a6
WIP - computer acting odd, committing code 2023-09-12 14:16:19 -04:00
mattmcclaskey 419a3a70e9
WIP - multi monitor refactor 2023-09-08 13:12:28 -04:00
Matt McClaskey d83f94c886
Transparent Rect Type (#58)
* 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>
2023-03-01 11:18:59 -05:00
Matt McClaskey 437830d497
Feature/kasm 3380 udp frame (#46)
* 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>
2022-11-11 09:31:16 -05:00
Matt McClaskey 9f240fc7b1
Major refactor of display class, support for QOI (#43)
* 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>
2022-11-02 07:01:54 -04:00
Matt McClaskey 9a95983382
KASM-3367 Refactor display.js, direct to visible canvas (#40)
* refactor display.js, remove non-visible canvas and concept of damage

* tweaks to UDP transitions

* Update testing readme

Co-authored-by: matt <matt@kasmweb.com>
Co-authored-by: matt mcclaskey <matt@kamsweb.com>
2022-10-14 15:07:57 -04:00
Matt McClaskey 5a8d8f24b4
Udp Initial MVP (#32)
* Initial UDP code

* refactored UDP reassembly

* WIP Added udp decoder

* WIP cleanup

* Port multiplexing

* UDP upgrade/downgrade

* UDP packets now have a hash

* Correct udp.js this.numColors bug

* auto upgrade to udp

* re-apply webpack

* Code cleanup, optimize clearing udpBuffer

Co-authored-by: Lauri Kasanen <cand@gmx.com>
Co-authored-by: matt <matt@kasmweb.com>
2022-07-29 12:38:55 -04:00
mmcclaskey ad1fc1f06d
KASM-2152 fps added to stats (#25)
Co-authored-by: matt <matt@kasmweb.com>
2022-01-11 15:31:39 -05:00
mmcclaskey ce2cd26277
Bugfx/kasm 2090 resizing issues (#23)
* KASM-2090 work around for incomplete webp images when there are lots of concurrent users on a single session. Unknown root cause, work around will in most cases keep the connection alive.
2021-11-15 08:19:19 -05:00
mmcclaskey e11e76e2c7
Feature/kasm 2041 mobile scaling (#20)
* KASM-2041 auto scale high res mobile - Browsers typically set a scale ratio for high resolution screens, so everything isn't tiny. This mostly works well, but results in a super low resolution for the remote display. This feature detects low resolutions where the browser is doing scaling and adjusts the scale backwards to reach a more reasonable resolution. This typically only happens on modern phones.
2021-11-08 12:55:37 -05:00
matt a0907e9390 KASM-1834 added new anti-aliasing feature 2021-09-12 17:53:03 +00:00
mmcclaskey 6b283b2313
Update display.js 2021-09-10 13:41:03 -04:00
matt 4c8e8ef1e1 KASM-1834 disable anti-aliasing when screen ratio is 1:1 2021-09-10 17:31:44 +00:00
matt a814f0594f KASM-1834 high dpi screens blurry 2021-09-09 11:34:39 +00:00
Lauri Kasanen f9f5b01cc2 Initial frame stat tracking 2021-07-27 15:28:02 +03:00
matt ed0744497d fix for video mode resizing 2021-04-18 06:36:53 -04:00
Pierre Ossman 27496941a0 Remove createImageData() fallback
All our browsers should be new enough now that we can rely on the
ImageData constructor.
2020-12-07 10:10:53 +01:00
Pierre Ossman 5b5b747494 Remove many small, obsolete, old browser hacks
These are for browsers no longer supported anyway.
2020-12-07 10:10:53 +01:00
Pierre Ossman 0630352e19 Merge branch 'rgbx' of https://github.com/CendioOssman/noVNC 2020-09-04 13:40:23 +02:00
Pierre Ossman 97b86abc94 Avoid fractional pixel sizes from Display 2020-06-11 16:50:08 +02:00
Pierre Ossman 6a19390baa Switch to RGBx pixel format
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.
2020-06-08 07:57:17 +02:00
Pierre Ossman f5b5767c98 Standardise on a single blit function
Keep everything simpler by always blitting in the same pixel format.
It's up to the decoders to convert if they need to.
2020-06-08 07:53:41 +02:00
Pierre Ossman 224f95f997 Move tile handling to Hextile decoder
It is only used there so no need for it to be in the general
Display class.
2020-06-06 13:23:05 +02:00
Samuel Mannehed 5d570207f7 Standardize on camelCase in Display 2020-05-31 23:21:35 +02:00
Samuel Mannehed dff4fefa3c Remove unused properties and variables
The code that used these were removed in the following commits:

* 9ff86fb718 (RFB._mouse_arr)
* bb6965f2e6 (old_requestAnimationFrame)
* 490d471c53 (Display._c_forceCanvas)
2020-05-31 22:49:41 +02:00
Pierre Ossman c4eb4ddcfe Handle slow loading of images
Internet Explorer seems to flag images as loaded prematurely, which
can result in rendering bugs. We can detect this by looking at the
dimensions though.
2019-12-23 15:52:54 +01:00
Pierre Ossman 4babdf33bd Validate decoded image dimensions
They are expected to be a certain size, so verify this so no server
tries to do something broken.
2019-12-23 15:42:02 +01:00