We still need to enable "js" feature for transitive dependencies.
Also, we need to explicitely enable the wasm backend via rustflags.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
As written in the workspace Cargo.toml:
> Note that for better cross-tooling interactions, do not use workspace
dependencies for anything that is not "workspace internal" (e.g.: mostly
dev-dependencies). E.g.: release-plz can’t detect that a dependency has
been
updated in a way warranting a version bump in the dependant if no commit
is
touching a file associated to the crate. It is technically okay to use
that
for "private" (i.e.: not used in the public API) dependencies too, but
we
still want to make follow-up releases to stay up to date with the
community,
even for private dependencies.
Expectation is that release-plz will be able to auto-detect when bumping
dependents is necessary.
Closes#689
Adds support for native cursors for `IronRDP-web`.
- Uses CSS `cursor` property to set the custom cursor (which we encode as Base64 data URL
- Software rendering is still in place and could be enabled via the config flag
- "Inverted colors" are implemented for native cursors as a "checkerboard pattern" (As in FreeRDP)
- Native cursors have size **limitation** - _Any remote cursor bigger than 32x32 will be scaled down._ This is due to browser limitations described [here](https://chromestatus.com/feature/5825971391299584) and [here](https://bugs.chromium.org/p/chromium/issues/detail?id=880863)
Closes#250
Instead of copying and sending image buffers to JavaScript, the WASM
module now draws into the canvas by itself. This removes some overhead
associated with the previous approach and open the door for further
optimizations.
In order to achieve good performance, the newest API of
`softbuffer@0.3.0` is used: the "owned buffer" that can be written into
by us with direct access and `present_with_damage` to apply partial
updates. The presentation itself is currently not yet "no-copy" in
the case of the web backend because the current API of `softbuffer` is
expecting a pixel buffer in the BGRX format while the underlying canvas
can only takes RGBA pixels. There is an open issue for this.
There was a bug with the `present_with_damage` implementation for the
web backend. I fixed the issue and opened a PR to upstream the patch.
The cargo dependency patch will be removed once the fix is published
on crates.io.
Issue: ARC-164
Ideally, when the WebSocket can’t be opened, the call to
`WebSocket::open` should fail with details on why is that (e.g., the
proxy hostname could not be resolved, proxy service is not running),
but errors are neved bubbled up in practice, so instead we poll the
WebSocket state until we know its connected (i.e., the WebSocket
handshake is a success and user data can be exchanged).
* feat: enable additional sspi features (KDC)
- Actually implement sspi-rs’s `NetworkClient` trait in `ironrdp-web`
- Enable the `dns_resolver` feature for `ironrdp-client` (the native client)
* Updated code to use new dev version of sspi-rs
* Updated sspi-rs to 0.9.0
---------
Co-authored-by: Vladyslav Nikonov <mail@pacmancoder.xyz>
> Make the root of the workspace a virtual manifest. It might
> be tempting to put the main crate into the root, but that
> pollutes the root with src/, requires passing --workspace to
> every Cargo command, and adds an exception to an otherwise
> consistent structure.
> Don’t succumb to the temptation to strip common prefix
> from folder names. If each crate is named exactly as the
> folder it lives in, navigation and renames become easier.
> Cargo.tomls of reverse dependencies mention both the folder
> and the crate name, it’s useful when they are exactly the
> same.
Source:
https://matklad.github.io/2021/08/22/large-rust-workspaces.html#Smaller-Tips