From 8d8d4c5cb1b3553215a8ba547d4db463fdc88831 Mon Sep 17 00:00:00 2001 From: Rostislav Pehlivanov Date: Thu, 5 Oct 2017 16:17:05 +0100 Subject: wayland_common: add support for embedding --- DOCS/man/options.rst | 4 ++++ video/out/wayland_common.c | 4 ++++ video/out/wayland_common.h | 1 + 3 files changed, 9 insertions(+) diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 8b1bc8c3d8..baf998d074 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -2471,6 +2471,10 @@ Window window fully. The value ``0`` is interpreted specially, and mpv will draw directly on the root window. + On wayland, the ID is interpreted as ``struct zxdg_toplevel_v6 *``. Pass it + as value cast to ``intptr_t``. mpv will create its own window, and set the + wid toplevel as its parent. + On win32, the ID is interpreted as ``HWND``. Pass it as value cast to ``intptr_t``. mpv will create its own window, and set the wid window as parent, like with X11. diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index fc8a07c85d..6c1c33b1dc 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -879,6 +879,10 @@ static int create_surface(struct vo_wayland_state *wl) wl->xdg_toplevel = zxdg_surface_v6_get_toplevel(wl->xdg_surface); zxdg_toplevel_v6_add_listener(wl->xdg_toplevel, &xdg_toplevel_listener, wl); + if (wl->vo->opts->WinID >= 0) + wl->xdg_tl_parent = (struct zxdg_toplevel_v6 *)(intptr_t)wl->vo->opts->WinID; + zxdg_toplevel_v6_set_parent(wl->xdg_toplevel, wl->xdg_tl_parent); + zxdg_toplevel_v6_set_title (wl->xdg_toplevel, "mpv"); zxdg_toplevel_v6_set_app_id(wl->xdg_toplevel, "mpv"); diff --git a/video/out/wayland_common.h b/video/out/wayland_common.h index 60d5924efa..0a6965b8ac 100644 --- a/video/out/wayland_common.h +++ b/video/out/wayland_common.h @@ -75,6 +75,7 @@ struct vo_wayland_state { struct wl_surface *surface; struct zxdg_shell_v6 *shell; struct zxdg_toplevel_v6 *xdg_toplevel; + struct zxdg_toplevel_v6 *xdg_tl_parent; struct zxdg_surface_v6 *xdg_surface; struct org_kde_kwin_server_decoration_manager *server_decoration_manager; struct org_kde_kwin_server_decoration *server_decoration; -- cgit v1.2.3