| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This commit causes the receive queue to dynamically
resize to fit incoming messages.
Fixes #557
|
|
|
|
|
|
| |
the `copyWithin` function of typed arrays has performance issues
in some versions of Chromium, and doesn't doesn't have enough
of a performance impact to justify leaving it enabled.
|
|\
| |
| | |
Make sure Pako always has enough room
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, we used a fixed chunkSize of 100KiB for Pako's output
buffer. Using a hardcoded size caused issues, since Pako would assume
we wanted to use multiple chunks, and we didn't deal with this. Now,
`Inflator#inflate()` takes a new `expected` argument, which indicates
the expected output size. If this is bigger than the current chunkSize,
Inflator allocates a new output buffer that's big enough to hold the
output.
Fixes #531
|
|/ |
|
|\
| |
| | |
Fix buffer over-reads in handle_tight
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For performance reasons, the `handle_tight` function skips the
use of the receive queue API and uses the raw receive queue directly.
Because of the way that typed array receive queue gets reused, this
introduced the potential for buffer over-reads.
To address this, a new function, `rQwhole`, was introduced.
`rQwhole` simply returns a new view into the receive queue that
starts at 0 and ends at the current recorded end of the queue.
`handle_tight` now makes use of this function.
Fixes #522
|
|
|
|
|
|
|
|
| |
There was a bug caused by 38781d931ec18304f51ed3469faff8387e3cbc55
which prevented color map look-ups sent by rfb.js from working properly,
since display.js expected a single-item array, and rfb.js sent just them
item value itself (a number) instead. This fixes that, and tweaks the
corresponding test to match that behavior.
|
|
|
|
|
|
| |
This `displayed` assertion had a bug that was causing it to not
actually check anything (it was using obj.length instead of
data_cl.length). This fixes that.
|
|
|
|
|
| |
There was a typo in ui.js preventing the use of the connect button
after a password was entered.
|
|\
| |
| | |
Performance Improvements
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit skips object creation for the render queue when not
needed. Instead of pushing an object onto the queue, and then
immediately running the result, you call the function directly.
Then, if the render queue is not empty, an object is created and
pushed onto the queue. Otherwise, the functionality is just run
directly.
|
| |
| |
| |
| |
| | |
This commit prevents multi-line error messages from being
truncated in the local test runner ('tests/run_from_console.js').
|
| |
| |
| |
| |
| |
| |
| | |
This commit adds the '--debugger <port>' option, which triggers
the PhantomJS remote debugger. The initial output of the terminal
when running the debugger gives more information on how to use
it.
|
| |
| |
| |
| |
| |
| |
| | |
This commit converts the send queue to use typed arrays, and converts
message creation functions in 'rfb.js' to create messages directly into
the socket's send queue. This commit also removes the separate mouse array,
which is no longer needed.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Creating lots of small objects frequently can drastically decrease
performance. This commit introduces three fixes which avoid this:
- Use a preallocated palette and indexed-to-rgb destination Typed Array
(the destination typed array is currently allocated at `4 * width *
height`).
- Inline `getTightCLength`, which returned a two-item array.
- Pass RGBX data directly in a Typed Array to the Display, which
avoids an extra loop, and only creates a new Typed Array View,
instead of a whole new ArrayBuffer.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
**This commit removes Base64 (and Flash) support**
This commit converts websock.js to used Typed Arrays for the
receive queue (and tweaks rfb.js to ensure that it continues
to function, since only Firefox implements
`%TypedArray%.prototype.slice`). Base64 support was removed
to simplify code paths, and pave the way for using Typed Arrays
for the send queue as well.
This provides two advantages: first, we allocate a buffer ahead
of time, meaning the browser doesn't have to do any work dynamically
increasing the receive queue size. Secondly, we are now able to pass
around Typed Array Views (e.g. `Uint8Array`), which are lightweight, and
don't involve copying.
The downside is that we initially allocate more memory -- we currently
start out with 4 MiB, and then automatically double when it looks like
the amount unused is getting to small.
The commit also explicitly adds a check to the compacting logic that
avoids calling the copy functions if `_rQlen === _rQi`.
|
| |
| |
| |
| |
| | |
This commit removes a nested loop in indexedToRGB, converting it into a
plain loop without multiplication.
|
| |
| |
| |
| |
| | |
This commit introduces an alternate implementation of the zlib
decompressor based on Pako (https://github.com/nodeca/pako).
|
| |
| |
| |
| |
| | |
This fixes a couple of JSHint errors in RFB.js caused
by using `==` instead of `===`.
|
| |
| |
| |
| |
| | |
This commit fixes vnc_playback.html and playback.js
so that they work with the current version of noVNC.
|
|/
|
|
|
| |
Also disable image-smoothing to avoid bugs seen on Android which were
also causing a blurry image while panning.
|
|
|
|
|
|
| |
This commit switches the Travis tests over to Travis's new
container-based infrastructure. It also tells Travis to
cache the node_modules directory for faster setup.
|
|\
| |
| | |
Add option to toggle fullscreen mode
|
| |
| |
| |
| |
| |
| | |
keyboard input doesn't work in fullscreen.
* Force clipping mode in Internet Explorer while in fullscreen since
scrollbars doesn't work in fullscreen.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
which kept track on if it was open or not (it automatically closes after
1.5 seconds anyway).
|
|
|
|
| |
moved it to where the other clipping functions are.
|
| |
|
|
|
|
| |
* Fixes #502 so that the viewport drag functionality can't get stuck
|
|
|
|
|
| |
"jumping around". Enable/disable the button instead of show/hide on these
devices.
|
|\
| |
| | |
Fixed incorrect UI usage and minor updateState params errors in vnc_auto.html
|
|/ |
|
|
|
|
| |
keyboardinputReset.. the issue was infact a typo which was introduced in 3b8ec46. I must be too tired..
|
|
|
|
| |
* This fixes backspace when using the on-screen keyboard on Android
|
|
|
| |
Removed old no longer existing vnc.js and added playback.js
|
|\
| |
| | |
Make noVNC compatible with Content Security Policies
|
|/ |
|
|
|
|
| |
* Disable local cursor when the browser doesn't support data uri
|
|\
| |
| | |
slip in PATH for 'npm test' as not everyone has karma
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
So people can follow the 'unit tests' instructions, we need
to make sure PATH includes the karma bin directory otherwise
we see the following:
----
aclouter@stevemcqueen:/usr/src/aten-ikvm/noVNC$ npm test
> noVNC@0.5.0 test /usr/src/aten-ikvm/noVNC
> karma start karma.conf.js
sh: 1: karma: not found
npm ERR! Test failed. See above for more details.
npm ERR! not ok code 0
----
|
|\ \
| | |
| | | |
Throw exceptions from RFB constructor
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously, if an error was thrown from the Display constructor
in the RFB constructor, we would attempt to use `RFB#updateState`
to handle this. However, `RFB#updateState` attempts to close
the WebSocket connection, which doesn't exist at this point.
In the constructor, it's probably just better to raise an exception
instead (making sure to clean up anything relevant).
Fixes #460
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In e543525faa9cf0d683f41e183e89cd909f3dd229, we switched to creating
a new RFB object on disconnect. This caused issues, however, since
any errors were only displayed briefly before the new "loaded" text
was displayed instead.
Now, we create the RFB object on connect. This essentially removes
the usefulness of the "loaded" state, but prevents the aforementioned
problem.
To facilitate this, the code which does detection of cursor URI support
was moved from this Display constructor (which now calls the new
function) into its own function, `Util.browserSupportsCursorURIs()`.
Fixes #467
|
|\ \ \
| |/ /
|/| | |
Follow symbolic links in launch.sh
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, in launch.sh, `$HERE` was the directory of `$0`.
However, if `$0` was actually a symlink, `$HERE` would be
wherever the symlink was, which could cause issues (for
example, the script wouldn't be able to local `$WEB` or
`$WEBSOCKIFY` properly).
Now, `$HERE` looks at whatever `$0` points at instead.
Closes #447.
|
| | |
|
|\ \
| | |
| | | |
Fix resize in Firefox on Android
|