Lines Matching full:backend
4 Subject: [PATCH 83/93] backend-vnc: add VNC support using Neat VNC library
8 loop library. The backend makes use of AML's integrated epoll backend
36 include/libweston/backend-vnc.h | 71 ++
39 libweston/backend-vnc/meson.build | 32 +
40 libweston/backend-vnc/vnc.c | 1032 +++++++++++++++++++++++++++++
45 create mode 100644 include/libweston/backend-vnc.h
46 create mode 100644 libweston/backend-vnc/meson.build
47 create mode 100644 libweston/backend-vnc/vnc.c
54 #include <libweston/backend-drm.h>
55 #include <libweston/backend-headless.h>
56 #include <libweston/backend-rdp.h>
57 +#include <libweston/backend-vnc.h>
58 #include <libweston/backend-x11.h>
59 #include <libweston/backend-wayland.h>
63 "\t\t\t\trdp-backend.so\n"
66 + "\t\t\t\tvnc-backend.so\n"
69 "\t\t\t\twayland-backend.so\n"
77 + "Options for vnc-backend.so:\n\n"
86 "Options for wayland-backend.so:\n\n"
178 @@ -3422,6 +3519,8 @@ load_backend(struct weston_compositor *compositor, const char *backend,
180 else if (strstr(backend, "rdp-backend.so"))
182 + else if (strstr(backend, "vnc-backend.so"))
184 else if (strstr(backend, "drm-backend.so"))
186 else if (strstr(backend, "x11-backend.so"))
187 diff --git a/include/libweston/backend-vnc.h b/include/libweston/backend-vnc.h
191 +++ b/include/libweston/backend-vnc.h
281 backend_drm_h = files('backend-drm.h')
282 backend_headless_h = files('backend-headless.h')
283 backend_rdp_h = files('backend-rdp.h')
284 +backend_vnc_h = files('backend-vnc.h')
285 backend_wayland_h = files('backend-wayland.h')
286 backend_x11_h = files('backend-x11.h')
288 diff --git a/libweston/backend-vnc/meson.build b/libweston/backend-vnc/meson.build
292 +++ b/libweston/backend-vnc/meson.build
294 +if not get_option('backend-vnc')
301 + error('VNC backend requires neatvnc which was not found. Or, you can use \'-Dbackend-vnc=false\'.…
306 + error('VNC backend requires libaml which was not found. Or, you can use \'-Dbackend-vnc=false\'.')
316 + 'vnc-backend',
324 +env_modmap += 'vnc-backend.so=@0@;'.format(plugin_vnc.full_path())
326 diff --git a/libweston/backend-vnc/vnc.c b/libweston/backend-vnc/vnc.c
330 +++ b/libweston/backend-vnc/vnc.c
336 + * based on backend-rdp:
383 +#include <libweston/backend-vnc.h>
417 + struct vnc_backend *backend;
438 + return container_of(base->backend, struct vnc_backend, base);
672 + struct vnc_output *output = peer->backend->output;
786 + struct vnc_backend *backend = nvnc_get_userdata(server);
787 + struct vnc_output *output = backend->output;
840 + struct vnc_backend *backend = nvnc_get_userdata(server);
841 + struct vnc_output *output = backend->output;
849 + peer->backend = backend;
856 + weston_seat_init(peer->seat, backend->compositor, seat_name);
858 + weston_seat_init_keyboard(peer->seat, backend->xkb_keymap);
902 + struct vnc_backend *backend;
914 + backend = to_vnc_backend(base->compositor);
915 + backend->output = output;
920 + loop = wl_display_get_event_loop(backend->compositor->wl_display);
934 + nvnc_add_display(backend->server, output->display);
949 + struct vnc_backend *backend;
953 + backend = to_vnc_backend(base->compositor);
964 + backend->output = NULL;
1008 + struct vnc_backend *backend = to_vnc_backend(ec);
1010 + nvnc_close(backend->server);
1014 + wl_event_source_remove(backend->aml_event);
1016 + aml_unref(backend->aml);
1021 + xkb_keymap_unref(backend->xkb_keymap);
1023 + free(backend);
1073 + struct vnc_backend *backend = to_vnc_backend(ec);
1103 + aml_dispatch(backend->aml);
1141 + struct vnc_backend *backend = to_vnc_backend(output->compositor);
1151 + backend->vnc_monitor_refresh_rate);
1197 + struct vnc_backend *backend = to_vnc_backend(base->compositor);
1216 + init_mode.refresh = backend->vnc_monitor_refresh_rate;
1253 + struct vnc_backend *backend;
1259 + backend = zalloc(sizeof *backend);
1260 + if (backend == NULL)
1263 + backend->compositor = compositor;
1264 + backend->base.destroy = vnc_destroy;
1265 + backend->base.create_output = vnc_create_output;
1266 + backend->vnc_monitor_refresh_rate = config->refresh_rate * 1000;
1268 + compositor->backend = &backend->base;
1281 + backend->xkb_rule_name.rules = strdup("evdev");
1282 + backend->xkb_rule_name.model = strdup("pc105");
1283 + backend->xkb_rule_name.layout = strdup("us");
1285 + backend->xkb_keymap = xkb_keymap_new_from_names(
1286 + backend->compositor->xkb_context,
1287 + &backend->xkb_rule_name, 0);
1289 + loop = wl_display_get_event_loop(backend->compositor->wl_display);
1291 + backend->aml = aml_new();
1292 + if (!backend->aml)
1294 + aml_set_default(backend->aml);
1296 + fd = aml_get_fd(backend->aml);
1298 + backend->aml_event = wl_event_loop_add_fd(loop, fd, WL_EVENT_READABLE,
1300 + backend->aml);
1302 + backend->server = nvnc_open(config->bind_address, config->port);
1303 + if (!backend->server)
1306 + nvnc_set_new_client_fn(backend->server, vnc_new_client);
1307 + nvnc_set_pointer_fn(backend->server, vnc_pointer_event);
1308 + nvnc_set_key_fn(backend->server, vnc_handle_key_event);
1309 + nvnc_set_userdata(backend->server, backend, NULL);
1310 + nvnc_set_name(backend->server, "Weston VNC backend");
1319 + return backend;
1322 + if (backend->output)
1323 + weston_output_release(&backend->output->base);
1328 + free(backend);
1344 + struct vnc_backend *backend;
1347 + weston_log("Initializing VNC backend\n");
1352 + weston_log("VNC backend config structure is invalid\n");
1359 + backend = vnc_backend_create(compositor, &config);
1360 + if (backend == NULL)
1369 [WESTON_BACKEND_DRM] = "drm-backend.so",
1370 [WESTON_BACKEND_HEADLESS] = "headless-backend.so",
1371 [WESTON_BACKEND_RDP] = "rdp-backend.so",
1372 + [WESTON_BACKEND_VNC] = "vnc-backend.so",
1373 [WESTON_BACKEND_WAYLAND] = "wayland-backend.so",
1374 [WESTON_BACKEND_X11] = "x11-backend.so",
1381 subdir('backend-drm')
1382 subdir('backend-headless')
1383 subdir('backend-rdp')
1384 +subdir('backend-vnc')
1385 subdir('backend-wayland')
1386 subdir('backend-x11')
1396 + 'backend-vnc',
1399 + description: 'Weston backend: VNC remote screensharing'
1402 'backend-wayland',