显然,这不是核心 Wayland 协议的一部分,但我使用的是 Weston,xdg-shell 扩展似乎有必要的方法:
xdg_surface_set_window_geometry
所以我跑去wayland-scanner
创建 xdg 代码和头文件:
wayland-scanner code < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.c
wayland-scanner client-header < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.h
我使用的代码大致如下:
surface = wl_compositor_create_surface(compositor);
if(surface == NULL) {
...
}
native_window = wl_egl_window_create(surface, some_width, some_height);
if(native_window == NULL) {
...
}
_xdg_surface = xdg_shell_get_xdg_surface(_xdg_shell, surface);
xdg_surface_set_window_geometry(_xdg_surface, 0, 0, some_width, some_height);
代码运行没有错误,但什么也不做。我正在使用库存的 Wayland 和 Weston 软件包在 Debian Jessie 上运行。
如果有其他方法xdg_shell
可能会起作用,我会全力以赴。