显然,这不是Wayland核心协议(protocol)的一部分,但我使用的是Weston,而xdg-shell扩展似乎具有必要的方法:
xdg_surface_set_window_geometry
所以我运行wayland-scanner来创建xdg代码和头文件:
wayland-scanner code < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.cwayland-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之外还有其他可行的方法,我将不胜枚举。

最佳答案

不知道它是否符合您的需求,但是在weston_view_set_initial_position(...)的weston/desktop-shell/shell.c中,使用了一个名为set_position的函数。

我设置了默认的xy值,并且可以正常工作。

10-06 06:25