compositor-fbdev: support the --seat option, (and XDG_SEAT variable)
This allows the fbdev backend to run on, and use devices from the specified seat, similar to the drm backend. Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
parent
b16c4ac55b
commit
d68109b960
@ -525,6 +525,7 @@ usage(int error_code)
|
|||||||
"Options for fbdev-backend.so:\n\n"
|
"Options for fbdev-backend.so:\n\n"
|
||||||
" --tty=TTY\t\tThe tty to use\n"
|
" --tty=TTY\t\tThe tty to use\n"
|
||||||
" --device=DEVICE\tThe framebuffer device to use\n"
|
" --device=DEVICE\tThe framebuffer device to use\n"
|
||||||
|
" --seat=SEAT\t\tThe seat that weston should run on, instead of the seat defined in XDG_SEAT\n"
|
||||||
"\n");
|
"\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2059,6 +2060,7 @@ load_fbdev_backend(struct weston_compositor *c,
|
|||||||
const struct weston_option fbdev_options[] = {
|
const struct weston_option fbdev_options[] = {
|
||||||
{ WESTON_OPTION_INTEGER, "tty", 0, &config.tty },
|
{ WESTON_OPTION_INTEGER, "tty", 0, &config.tty },
|
||||||
{ WESTON_OPTION_STRING, "device", 0, &config.device },
|
{ WESTON_OPTION_STRING, "device", 0, &config.device },
|
||||||
|
{ WESTON_OPTION_STRING, "seat", 0, &config.seat_id },
|
||||||
};
|
};
|
||||||
|
|
||||||
parse_options(fbdev_options, ARRAY_LENGTH(fbdev_options), argc, argv);
|
parse_options(fbdev_options, ARRAY_LENGTH(fbdev_options), argc, argv);
|
||||||
|
@ -776,6 +776,13 @@ fbdev_backend_create(struct weston_compositor *compositor,
|
|||||||
{
|
{
|
||||||
struct fbdev_backend *backend;
|
struct fbdev_backend *backend;
|
||||||
const char *seat_id = default_seat;
|
const char *seat_id = default_seat;
|
||||||
|
const char *session_seat;
|
||||||
|
|
||||||
|
session_seat = getenv("XDG_SEAT");
|
||||||
|
if (session_seat)
|
||||||
|
seat_id = session_seat;
|
||||||
|
if (param->seat_id)
|
||||||
|
seat_id = param->seat_id;
|
||||||
|
|
||||||
weston_log("initializing fbdev backend\n");
|
weston_log("initializing fbdev backend\n");
|
||||||
|
|
||||||
@ -800,7 +807,7 @@ fbdev_backend_create(struct weston_compositor *compositor,
|
|||||||
wl_signal_add(&compositor->session_signal,
|
wl_signal_add(&compositor->session_signal,
|
||||||
&backend->session_listener);
|
&backend->session_listener);
|
||||||
compositor->launcher =
|
compositor->launcher =
|
||||||
weston_launcher_connect(compositor, param->tty, "seat0", false);
|
weston_launcher_connect(compositor, param->tty, seat_id, false);
|
||||||
if (!compositor->launcher) {
|
if (!compositor->launcher) {
|
||||||
weston_log("fatal: fbdev backend should be run using "
|
weston_log("fatal: fbdev backend should be run using "
|
||||||
"weston-launch binary, or your system should "
|
"weston-launch binary, or your system should "
|
||||||
@ -846,6 +853,7 @@ config_init_to_defaults(struct weston_fbdev_backend_config *config)
|
|||||||
* udev, rather than passing a device node in as a parameter. */
|
* udev, rather than passing a device node in as a parameter. */
|
||||||
config->tty = 0; /* default to current tty */
|
config->tty = 0; /* default to current tty */
|
||||||
config->device = "/dev/fb0"; /* default frame buffer */
|
config->device = "/dev/fb0"; /* default frame buffer */
|
||||||
|
config->seat_id = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT int
|
WL_EXPORT int
|
||||||
|
@ -52,6 +52,15 @@ struct weston_fbdev_backend_config {
|
|||||||
*/
|
*/
|
||||||
void (*configure_device)(struct weston_compositor *compositor,
|
void (*configure_device)(struct weston_compositor *compositor,
|
||||||
struct libinput_device *device);
|
struct libinput_device *device);
|
||||||
|
|
||||||
|
/** The seat to be used for input and output.
|
||||||
|
*
|
||||||
|
* If seat_id is NULL, the seat is taken from XDG_SEAT environment
|
||||||
|
* variable. If neither is set, "seat0" is used. The backend will
|
||||||
|
* take ownership of the seat_id pointer and will free it on
|
||||||
|
* backend destruction.
|
||||||
|
*/
|
||||||
|
char *seat_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
Reference in New Issue
Block a user