12f7665310
This adds basic VNC protocol support using the Neat VNC library (https://github.com/any1/neatvnc). Neat VNC depends on the AML main loop library. The backend makes use of AML's integrated epoll backend and connects AML via file descriptor with the Wayland event loop. This implementation does not support authentication and hardcodes the pixel format currently. Co-authored-by: Philipp Zabel <p.zabel@pengutronix.de> Co-authored-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> Signed-off-by: Stefan Agner <stefan@agner.ch> [r.czerwinski@pengutronix.de: - use new (as of 0.5.0) Neat VNC buffer API, with a buffer pool] Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> [p.zabel@pengutronix.de: - transform repaint damage to output coordinates - transform pointer coordinates into global space - check that outputs and heads are in fact ours, see aab722bb1785..060ef82d9360 - track damage across multiple frame buffers - choose pixel format by drm_fourcc, see8b6c3fe0ad
- enable ctrl and alt modifiers - fix frame timing to achieve a constant repaint rate - pass initial size explicitly, seef4559b0760
- use resize_output with pixman-renderer, see 55d08f9634e8..84b5d0eb4bee - allow configuring the refresh rate] Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
237 lines
6.3 KiB
Meson
237 lines
6.3 KiB
Meson
deps_libweston = [
|
|
dep_wayland_server,
|
|
dep_pixman,
|
|
dep_libm,
|
|
dep_libdl,
|
|
dep_libdrm,
|
|
dep_xkbcommon,
|
|
dep_matrix_c
|
|
]
|
|
srcs_libweston = [
|
|
git_version_h,
|
|
'animation.c',
|
|
'bindings.c',
|
|
'clipboard.c',
|
|
'color.c',
|
|
'color-noop.c',
|
|
'compositor.c',
|
|
'content-protection.c',
|
|
'data-device.c',
|
|
'drm-formats.c',
|
|
'input.c',
|
|
'linux-dmabuf.c',
|
|
'linux-explicit-synchronization.c',
|
|
'linux-sync-file.c',
|
|
'log.c',
|
|
'noop-renderer.c',
|
|
'pixel-formats.c',
|
|
'pixman-renderer.c',
|
|
'plugin-registry.c',
|
|
'screenshooter.c',
|
|
'timeline.c',
|
|
'touch-calibration.c',
|
|
'weston-log-wayland.c',
|
|
'weston-log-file.c',
|
|
'weston-log-flight-rec.c',
|
|
'weston-log.c',
|
|
'weston-direct-display.c',
|
|
linux_dmabuf_unstable_v1_protocol_c,
|
|
linux_dmabuf_unstable_v1_server_protocol_h,
|
|
linux_explicit_synchronization_unstable_v1_protocol_c,
|
|
linux_explicit_synchronization_unstable_v1_server_protocol_h,
|
|
input_method_unstable_v1_protocol_c,
|
|
input_method_unstable_v1_server_protocol_h,
|
|
input_timestamps_unstable_v1_protocol_c,
|
|
input_timestamps_unstable_v1_server_protocol_h,
|
|
presentation_time_protocol_c,
|
|
presentation_time_server_protocol_h,
|
|
pointer_constraints_unstable_v1_protocol_c,
|
|
pointer_constraints_unstable_v1_server_protocol_h,
|
|
relative_pointer_unstable_v1_protocol_c,
|
|
relative_pointer_unstable_v1_server_protocol_h,
|
|
weston_screenshooter_protocol_c,
|
|
weston_screenshooter_server_protocol_h,
|
|
single_pixel_buffer_v1_protocol_c,
|
|
single_pixel_buffer_v1_server_protocol_h,
|
|
text_cursor_position_protocol_c,
|
|
text_cursor_position_server_protocol_h,
|
|
text_input_unstable_v1_protocol_c,
|
|
text_input_unstable_v1_server_protocol_h,
|
|
weston_touch_calibration_protocol_c,
|
|
weston_touch_calibration_server_protocol_h,
|
|
weston_content_protection_protocol_c,
|
|
weston_content_protection_server_protocol_h,
|
|
viewporter_protocol_c,
|
|
viewporter_server_protocol_h,
|
|
xdg_output_unstable_v1_protocol_c,
|
|
xdg_output_unstable_v1_server_protocol_h,
|
|
weston_debug_protocol_c,
|
|
weston_debug_server_protocol_h,
|
|
weston_direct_display_protocol_c,
|
|
weston_direct_display_server_protocol_h,
|
|
]
|
|
|
|
subdir('desktop')
|
|
|
|
if get_option('renderer-gl')
|
|
dep_egl = dependency('egl', required: false)
|
|
if not dep_egl.found()
|
|
error('libweston + gl-renderer requires egl which was not found. Or, you can use \'-Drenderer-gl=false\'.')
|
|
endif
|
|
deps_libweston += dep_egl
|
|
endif
|
|
|
|
lib_weston = shared_library(
|
|
'weston-@0@'.format(libweston_major),
|
|
srcs_libweston,
|
|
include_directories: common_inc,
|
|
install: true,
|
|
version: '0.0.@0@'.format(libweston_revision),
|
|
link_whole: lib_libshared,
|
|
dependencies: deps_libweston
|
|
)
|
|
|
|
deps_for_libweston_users = [
|
|
dep_wayland_server,
|
|
dep_pixman,
|
|
dep_xkbcommon,
|
|
]
|
|
|
|
# For external users, like Weston.
|
|
dep_libweston_public = declare_dependency(
|
|
link_with: lib_weston,
|
|
include_directories: public_inc,
|
|
dependencies: deps_for_libweston_users
|
|
)
|
|
|
|
# For internal users, like the backends.
|
|
dep_libweston_private = declare_dependency(
|
|
link_with: lib_weston,
|
|
include_directories: [ include_directories('.'), public_inc ],
|
|
dependencies: deps_for_libweston_users
|
|
)
|
|
|
|
# XXX: We should be able to use dep_libweston_private.partial_dependency() instead
|
|
# of this, but a Meson bug makes it not work. It will be fixed with
|
|
# https://github.com/mesonbuild/meson/pull/5167
|
|
# in hopefully Meson 0.51.
|
|
dep_libweston_private_h_deps = []
|
|
foreach d : deps_for_libweston_users
|
|
dep_libweston_private_h_deps += d.partial_dependency(compile_args: true)
|
|
endforeach
|
|
dep_libweston_private_h = declare_dependency(
|
|
include_directories: [ include_directories('.'), public_inc ],
|
|
dependencies: dep_libweston_private_h_deps
|
|
)
|
|
|
|
pkgconfig.generate(
|
|
lib_weston,
|
|
filebase: 'libweston-@0@'.format(libweston_major),
|
|
name: 'libweston API',
|
|
version: version_weston,
|
|
description: 'Header files for libweston compositors development',
|
|
requires_private: deps_for_libweston_users,
|
|
subdirs: dir_include_libweston
|
|
)
|
|
|
|
pkgconfig.generate(
|
|
filebase: 'libweston-@0@-protocols'.format(libweston_major),
|
|
name: 'libWeston Protocols',
|
|
version: version_weston,
|
|
description: 'libWeston protocol files',
|
|
variables: [
|
|
'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
|
|
'pkgdatadir=' + join_paths('${pc_sysrootdir}${datarootdir}', dir_protocol_libweston)
|
|
],
|
|
install_dir: dir_data_pc
|
|
)
|
|
|
|
srcs_session_helper = [
|
|
'launcher-util.c',
|
|
]
|
|
deps_session_helper = [ dep_libweston_private_h ]
|
|
|
|
if get_option('backend-drm')
|
|
deps_session_helper += dep_libdrm
|
|
endif
|
|
|
|
systemd_dep = dependency('', required: false)
|
|
if get_option('deprecated-launcher-logind')
|
|
systemd_dep = dependency('libsystemd', version: '>= 209', required: false)
|
|
if not systemd_dep.found()
|
|
error('logind support requires libsystemd >= 209. Or, you can use \'-Ddeprecated-launcher-logind=false\'')
|
|
endif
|
|
|
|
dbus_dep = dependency('dbus-1', version: '>= 1.6', required: false)
|
|
if not dbus_dep.found()
|
|
error('logind support requires dbus-1 >= 1.6 which was not found. Or, you can use \'-Ddeprecated-launcher-logind=false\'')
|
|
endif
|
|
|
|
config_h.set('HAVE_DBUS', '1')
|
|
config_h.set('HAVE_SYSTEMD_LOGIN', '1')
|
|
|
|
srcs_session_helper += [
|
|
'dbus.c',
|
|
'launcher-logind.c',
|
|
]
|
|
deps_session_helper += [
|
|
dbus_dep,
|
|
systemd_dep,
|
|
]
|
|
|
|
warning('deprecated-launcher-logind is enabled. This will go away, see https://gitlab.freedesktop.org/wayland/weston/-/issues/488')
|
|
endif
|
|
if get_option('launcher-libseat')
|
|
libseat_dep = dependency('libseat', version: '>= 0.4')
|
|
config_h.set('HAVE_LIBSEAT', '1')
|
|
srcs_session_helper += [
|
|
'launcher-libseat.c',
|
|
]
|
|
deps_session_helper += [
|
|
libseat_dep,
|
|
]
|
|
endif
|
|
|
|
lib_session_helper = static_library(
|
|
'session-helper',
|
|
srcs_session_helper,
|
|
include_directories: common_inc,
|
|
dependencies: deps_session_helper,
|
|
install: false
|
|
)
|
|
dep_session_helper = declare_dependency(link_with: lib_session_helper)
|
|
|
|
|
|
lib_libinput_backend = static_library(
|
|
'libinput-backend',
|
|
[
|
|
'libinput-device.c',
|
|
'libinput-seat.c'
|
|
],
|
|
dependencies: [
|
|
dep_libweston_private,
|
|
dep_libinput,
|
|
dependency('libudev', version: '>= 136')
|
|
],
|
|
include_directories: common_inc,
|
|
install: false
|
|
)
|
|
dep_libinput_backend = declare_dependency(
|
|
link_with: lib_libinput_backend,
|
|
include_directories: include_directories('.')
|
|
)
|
|
|
|
dep_vertex_clipping = declare_dependency(
|
|
sources: 'vertex-clipping.c',
|
|
include_directories: include_directories('.')
|
|
)
|
|
|
|
subdir('color-lcms')
|
|
subdir('renderer-gl')
|
|
subdir('backend-drm')
|
|
subdir('backend-headless')
|
|
subdir('backend-rdp')
|
|
subdir('backend-vnc')
|
|
subdir('backend-wayland')
|
|
subdir('backend-x11')
|