-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement VNC backend #63
Conversation
6bdbf37
to
db4ce80
Compare
ifeq ($(CONFIG_BACKEND_VNC), y) | ||
BACKEND = vnc | ||
libtwin.a_files-y += backend/vnc.c | ||
libtwin.a_cflags-y += $(shell pkg-config --cflags neatvnc aml pixman-1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In #55, it also uses pixman features. Therefore, whoever merges first, another person needs to pay attention to the adjustment of pixman patch in the Makefile.
db4ce80
to
04f5f6f
Compare
04f5f6f
to
f01c167
Compare
f01c167
to
40895a0
Compare
5e4fd44
to
5920459
Compare
README.md
Outdated
For those who want to run demo program with VNC as the backend, it is necessary to install the [aml](https://github.com/any1/aml) and [neatvnc](https://github.com/any1/neatvnc) libraries. Please note that using package managers like apt might install outdated versions of these libraries. To ensure you have the latest versions, you can build them from source by running the provided script: | ||
|
||
```bash | ||
$sudo ./tools/build-neatvnc.sh |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't run with sudo
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since ninja -C build install
requires root access, may I know the reason for removing sudo here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The way to pass an option to Meson is using the -D
option. So to set the prefix, you should use meson -Dprefix=$(PWD)/_statatic build
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current build script also installs some dependencies specifically for neatvnc
and aml
. Should these be moved to the Prerequisites section in the README?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, the primary purpose of this build script is to simplify the installation of build-time dependencies. While users can manually handle the dependencies themselves, the script provides a convenient alternative. We specifically chose to install the dependencies as statically-linked libraries to minimize required system modifications, ensuring the least intrusive setup process possible.
5920459
to
c76c99a
Compare
c76c99a
to
ac8e6c6
Compare
ca1e4e9
to
f16b17c
Compare
1e02939
to
6b08f69
Compare
This comment was marked as outdated.
This comment was marked as outdated.
|
6b08f69
to
fc7320f
Compare
fc7320f
to
af44183
Compare
twin_screen_dispatch(tx->screen, &tev); | ||
} | ||
|
||
static struct nvnc_fb *_twin_vnc_create_cursor() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should have a strong reason to create cursor here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since neatvnc provides a cursor feature, we could use it to render the cursor directly in the VNC framebuffer which makes smoother cursor movement.
af44183
to
7013e5c
Compare
Add VNC backend using `neatvnc`[1]. Allow users can view and interact with applications in Mado through VNC-compatible client software. [1]: https://github.com/any1/neatvnc Close sysprog21#32
7013e5c
to
68ae09c
Compare
Previously, cursor movement was handled by passing pointer events into twin screen, and then calculated the damage region for the cursor's new position and transmitted it to the VNC framebuffer. This process introduced latency in cursor display due to the multiple steps involved. To address this delay, the cursor is now rendered directly within the VNC framebuffer by leveraging neatvnc's internal cursor API. This change bypasses the intermediate steps and provides a smoother and more responsive cursor movement experience in the VNC backend.
68ae09c
to
6cbe4ae
Compare
Tested with TigerVNC and gvncviewer on Ubuntu Linux 20.04-LTS. |
Thank @ndsl7109256 for contributing! |
Add VNC backend using
neatvnc
1. Allow users can view and interact with applications in Mado through VNC-compatible client software.To test the new feature:
VNC server output support
as backend selection2024-10-24.10.34.16.mov