summaryrefslogtreecommitdiffstats
path: root/video/out/wayland_common.c
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2020-10-05 09:12:29 -0500
committerDudemanguy <random342@airmail.cc>2020-10-06 17:45:59 +0000
commit015b6768759c8bd8cc815be01123ef95c192f3c5 (patch)
tree537462cd5465915d2537c2e0e088eb388da3976b /video/out/wayland_common.c
parent39f4fd0dc7e025af5c653e43dc05e71455d99570 (diff)
downloadmpv-015b6768759c8bd8cc815be01123ef95c192f3c5.tar.bz2
mpv-015b6768759c8bd8cc815be01123ef95c192f3c5.tar.xz
wayland: add wayland-display-socket option
As per the client API, a client can connect to any arbitrary wayland socket. mpv has always just passed NULL which connected to the compositor currently in use, but one could just as easily pass the name of a different socket (i.e. the value of WAYLAND_DISPLAY). Here, we just expose this argument as a user configurable option. If the user passes a socket name that does not exist, then print a warning and fall back to NULL.
Diffstat (limited to 'video/out/wayland_common.c')
-rw-r--r--video/out/wayland_common.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c
index eb1e0f8c21..d3fbc22dcb 100644
--- a/video/out/wayland_common.c
+++ b/video/out/wayland_common.c
@@ -46,6 +46,7 @@
const struct m_sub_options wayland_conf = {
.opts = (const struct m_option[]) {
{"wayland-disable-vsync", OPT_FLAG(disable_vsync)},
+ {"wayland-display-socket", OPT_STRING(display_socket)},
{"wayland-edge-pixels-pointer", OPT_INT(edge_pixels_pointer),
M_RANGE(0, INT_MAX)},
{"wayland-edge-pixels-touch", OPT_INT(edge_pixels_touch),
@@ -55,6 +56,7 @@ const struct m_sub_options wayland_conf = {
.size = sizeof(struct wayland_opts),
.defaults = &(struct wayland_opts) {
.disable_vsync = false,
+ .display_socket = NULL,
.edge_pixels_pointer = 10,
.edge_pixels_touch = 64,
},
@@ -1125,7 +1127,6 @@ int vo_wayland_init(struct vo *vo)
struct vo_wayland_state *wl = vo->wl;
*wl = (struct vo_wayland_state) {
- .display = wl_display_connect(NULL),
.vo = vo,
.log = mp_log_new(wl, vo->log, "wayland"),
.scaling = 1,
@@ -1134,8 +1135,16 @@ int vo_wayland_init(struct vo *vo)
.cursor_visible = true,
.vo_opts_cache = m_config_cache_alloc(wl, vo->global, &vo_sub_opts),
};
+ wl->opts = mp_get_config_group(wl, wl->vo->global, &wayland_conf);
wl->vo_opts = wl->vo_opts_cache->opts;
+ wl->display = wl_display_connect(wl->opts->display_socket);
+ if (!wl->display) {
+ MP_WARN(wl, "Display socket %s not found/unavailable! Falling back to NULL!\n", wl->opts->display_socket);
+ wl->display = wl_display_connect(NULL);
+ }
+ wl->display_fd = wl_display_get_fd(wl->display);
+
wl_list_init(&wl->output_list);
if (!wl->display)
@@ -1204,8 +1213,6 @@ int vo_wayland_init(struct vo *vo)
MP_VERBOSE(wl, "Compositor doesn't support the %s protocol!\n",
zwp_idle_inhibit_manager_v1_interface.name);
- wl->opts = mp_get_config_group(wl, wl->vo->global, &wayland_conf);
- wl->display_fd = wl_display_get_fd(wl->display);
mp_make_wakeup_pipe(wl->wakeup_pipe);
return true;