mirror of
https://github.com/cage-kiosk/cage.git
synced 2025-10-29 05:40:19 -04:00
Compare commits
3 commits
1ab4582577
...
6f20285555
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f20285555 | ||
|
|
6efb3b5042 | ||
|
|
e21c155bcd |
6 changed files with 42 additions and 11 deletions
9
.github/workflows/main.yml
vendored
9
.github/workflows/main.yml
vendored
|
|
@ -5,6 +5,9 @@ on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
|
|
||||||
|
env:
|
||||||
|
WLROOTS_VERSION: 0.19
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
compile:
|
compile:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
@ -32,7 +35,7 @@ jobs:
|
||||||
pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc
|
pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc
|
||||||
|
|
||||||
- name: Fetch wlroots as a subproject
|
- name: Fetch wlroots as a subproject
|
||||||
run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b 0.18
|
run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b $WLROOTS_VERSION
|
||||||
|
|
||||||
- name: Compile Cage (XWayland=${{ matrix.xwayland }})
|
- name: Compile Cage (XWayland=${{ matrix.xwayland }})
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -52,7 +55,7 @@ jobs:
|
||||||
pacman-key --init
|
pacman-key --init
|
||||||
pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc hwdata
|
pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc hwdata
|
||||||
- name: Fetch wlroots as a subproject
|
- name: Fetch wlroots as a subproject
|
||||||
run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b 0.18
|
run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b $WLROOTS_VERSION
|
||||||
- name: Check for formatting changes
|
- name: Check for formatting changes
|
||||||
run: |
|
run: |
|
||||||
meson build-clang-format -Dwlroots:xwayland=enabled
|
meson build-clang-format -Dwlroots:xwayland=enabled
|
||||||
|
|
@ -71,7 +74,7 @@ jobs:
|
||||||
pacman-key --init
|
pacman-key --init
|
||||||
pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc hwdata
|
pacman -Syu --noconfirm xcb-util-wm seatd git clang meson libinput libdrm mesa libxkbcommon wayland wayland-protocols xorg-server-xwayland scdoc hwdata
|
||||||
- name: Fetch wlroots as a subproject
|
- name: Fetch wlroots as a subproject
|
||||||
run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b 0.18
|
run: git clone https://gitlab.freedesktop.org/wlroots/wlroots.git subprojects/wlroots -b $WLROOTS_VERSION
|
||||||
- name: Run scan-build
|
- name: Run scan-build
|
||||||
run: |
|
run: |
|
||||||
meson build-scan-build -Dwlroots:xwayland=enabled
|
meson build-scan-build -Dwlroots:xwayland=enabled
|
||||||
|
|
|
||||||
16
cage.c
16
cage.c
|
|
@ -454,7 +454,7 @@ main(int argc, char *argv[])
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_presentation *presentation = wlr_presentation_create(server.wl_display, server.backend);
|
struct wlr_presentation *presentation = wlr_presentation_create(server.wl_display, server.backend, 2);
|
||||||
if (!presentation) {
|
if (!presentation) {
|
||||||
wlr_log(WLR_ERROR, "Unable to create the presentation interface");
|
wlr_log(WLR_ERROR, "Unable to create the presentation interface");
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
|
@ -596,11 +596,25 @@ main(int argc, char *argv[])
|
||||||
wl_display_run(server.wl_display);
|
wl_display_run(server.wl_display);
|
||||||
|
|
||||||
#if CAGE_HAS_XWAYLAND
|
#if CAGE_HAS_XWAYLAND
|
||||||
|
if (xwayland) {
|
||||||
|
wl_list_remove(&server.new_xwayland_surface.link);
|
||||||
|
}
|
||||||
wlr_xwayland_destroy(xwayland);
|
wlr_xwayland_destroy(xwayland);
|
||||||
wlr_xcursor_manager_destroy(xcursor_manager);
|
wlr_xcursor_manager_destroy(xcursor_manager);
|
||||||
#endif
|
#endif
|
||||||
wl_display_destroy_clients(server.wl_display);
|
wl_display_destroy_clients(server.wl_display);
|
||||||
|
|
||||||
|
wl_list_remove(&server.new_virtual_pointer.link);
|
||||||
|
wl_list_remove(&server.new_virtual_keyboard.link);
|
||||||
|
wl_list_remove(&server.output_manager_apply.link);
|
||||||
|
wl_list_remove(&server.output_manager_test.link);
|
||||||
|
wl_list_remove(&server.xdg_toplevel_decoration.link);
|
||||||
|
wl_list_remove(&server.new_xdg_toplevel.link);
|
||||||
|
wl_list_remove(&server.new_xdg_popup.link);
|
||||||
|
wl_list_remove(&server.new_idle_inhibitor_v1.link);
|
||||||
|
wl_list_remove(&server.new_output.link);
|
||||||
|
wl_list_remove(&server.output_layout_change.link);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
if (pid != 0)
|
if (pid != 0)
|
||||||
app_ret = cleanup_primary_client(pid);
|
app_ret = cleanup_primary_client(pid);
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ if is_freebsd
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
wlroots = dependency('wlroots-0.18', fallback: ['wlroots', 'wlroots'])
|
wlroots = dependency('wlroots-0.19', fallback: ['wlroots', 'wlroots'])
|
||||||
wayland_protos = dependency('wayland-protocols', version: '>=1.14')
|
wayland_protos = dependency('wayland-protocols', version: '>=1.14')
|
||||||
wayland_server = dependency('wayland-server')
|
wayland_server = dependency('wayland-server')
|
||||||
xkbcommon = dependency('xkbcommon')
|
xkbcommon = dependency('xkbcommon')
|
||||||
|
|
|
||||||
17
seat.c
17
seat.c
|
|
@ -380,6 +380,16 @@ cleanup:
|
||||||
free(cg_group);
|
free(cg_group);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
keyboard_group_destroy(struct cg_keyboard_group *keyboard_group)
|
||||||
|
{
|
||||||
|
wl_list_remove(&keyboard_group->key.link);
|
||||||
|
wl_list_remove(&keyboard_group->modifiers.link);
|
||||||
|
wlr_keyboard_group_destroy(keyboard_group->wlr_group);
|
||||||
|
wl_list_remove(&keyboard_group->link);
|
||||||
|
free(keyboard_group);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_new_keyboard(struct cg_seat *seat, struct wlr_keyboard *keyboard, bool virtual)
|
handle_new_keyboard(struct cg_seat *seat, struct wlr_keyboard *keyboard, bool virtual)
|
||||||
{
|
{
|
||||||
|
|
@ -893,6 +903,11 @@ seat_destroy(struct cg_seat *seat)
|
||||||
wl_list_remove(&seat->request_start_drag.link);
|
wl_list_remove(&seat->request_start_drag.link);
|
||||||
wl_list_remove(&seat->start_drag.link);
|
wl_list_remove(&seat->start_drag.link);
|
||||||
|
|
||||||
|
struct cg_keyboard_group *keyboard_group, *keyboard_group_tmp;
|
||||||
|
wl_list_for_each_safe (keyboard_group, keyboard_group_tmp, &seat->keyboard_groups, link) {
|
||||||
|
keyboard_group_destroy(keyboard_group);
|
||||||
|
}
|
||||||
|
|
||||||
// Destroying the wlr seat will trigger the destroy handler on our seat,
|
// Destroying the wlr seat will trigger the destroy handler on our seat,
|
||||||
// which will in turn free it.
|
// which will in turn free it.
|
||||||
wlr_seat_destroy(seat->seat);
|
wlr_seat_destroy(seat->seat);
|
||||||
|
|
@ -922,7 +937,7 @@ seat_set_focus(struct cg_seat *seat, struct cg_view *view)
|
||||||
#if CAGE_HAS_XWAYLAND
|
#if CAGE_HAS_XWAYLAND
|
||||||
if (view->type == CAGE_XWAYLAND_VIEW) {
|
if (view->type == CAGE_XWAYLAND_VIEW) {
|
||||||
struct cg_xwayland_view *xwayland_view = xwayland_view_from_view(view);
|
struct cg_xwayland_view *xwayland_view = xwayland_view_from_view(view);
|
||||||
if (!wlr_xwayland_or_surface_wants_focus(xwayland_view->xwayland_surface)) {
|
if (!wlr_xwayland_surface_override_redirect_wants_focus(xwayland_view->xwayland_surface)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -128,11 +128,10 @@ static void
|
||||||
get_geometry(struct cg_view *view, int *width_out, int *height_out)
|
get_geometry(struct cg_view *view, int *width_out, int *height_out)
|
||||||
{
|
{
|
||||||
struct cg_xdg_shell_view *xdg_shell_view = xdg_shell_view_from_view(view);
|
struct cg_xdg_shell_view *xdg_shell_view = xdg_shell_view_from_view(view);
|
||||||
struct wlr_box geom;
|
struct wlr_xdg_surface *xdg_surface = xdg_shell_view->xdg_toplevel->base;
|
||||||
|
|
||||||
wlr_xdg_surface_get_geometry(xdg_shell_view->xdg_toplevel->base, &geom);
|
*width_out = xdg_surface->geometry.width;
|
||||||
*width_out = geom.width;
|
*height_out = xdg_surface->geometry.height;
|
||||||
*height_out = geom.height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ maximize(struct cg_view *view, int output_width, int output_height)
|
||||||
struct cg_xwayland_view *xwayland_view = xwayland_view_from_view(view);
|
struct cg_xwayland_view *xwayland_view = xwayland_view_from_view(view);
|
||||||
wlr_xwayland_surface_configure(xwayland_view->xwayland_surface, view->lx, view->ly, output_width,
|
wlr_xwayland_surface_configure(xwayland_view->xwayland_surface, view->lx, view->ly, output_width,
|
||||||
output_height);
|
output_height);
|
||||||
wlr_xwayland_surface_set_maximized(xwayland_view->xwayland_surface, true);
|
wlr_xwayland_surface_set_maximized(xwayland_view->xwayland_surface, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue