diff --git a/Bugs.md b/Bugs.md index 244056d..328450d 100644 --- a/Bugs.md +++ b/Bugs.md @@ -352,3 +352,15 @@ Apologies for opening two tickets instead of one, but I thought that these two s Would replicating the behaviour in ratpoison (if no config file is found, load predefined defaults) something you would be interested in? I personally found confusing when I first tried cagebreak that it wouldn't start without a config file, coming from ratpoison. Of course, other people's experience might be different. ``` +### Issue 28 + + * github issue number: #10 + * Fixed: 1.8.2 + +``` +I'm using v. 1.8.1 and am experiencing a screen refresh lag, particularly on Firefox: + +When I type in anything, the text is refreshed and becomes visible only following mouse movement. I don't experience this with the same setup when I use Sway as the compositor. +``` + +Cagebreak had an error with damage tracking. diff --git a/LICENSE b/LICENSE index bd31b7d..538d78c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2020-2021 The Cagebreak authors +Copyright (c) 2020-2022 The Cagebreak authors Copyright (c) 2018-2020 Jente Hidskes Copyright (c) 2019 The Sway authors diff --git a/README.md b/README.md index a99d6fe..ef88746 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,21 @@ For every release after 1.0.5, hashes will be provided. For every release after 1.7.0, hashes will be provided for man pages too. +1.8.2 cagebreak + + * sha 256: f4d275d48ba3d999969f8cb3c8142d27aa8e8d362106ee7575e4b13c02173b2a + * sha 512: 72b11cb966b0978133b9848c2a7f57574c599c7fe895ca9f1cba16930216e1ac8aeae86d976593fc01b15e94ecc1430666f474654cf2fe41eda8c1181bf03f3d + +1.8.2 cagebreak.1 + + * sha 256: 51ee97a7c0b86268cf7622f84f7b1813df8e4a7838c00aae412a611d3693e87a + * sha 512: 5ce826afbee9cbc1129f37463f5b6d4dfc060583f6f7816dd5039b18d66a2b7e22f7293a4aa03acc4e6c690886d0297fef5b9f85d720a4467becfd833b59a160 + +1.8.2 cagebreak-config.5 + + * sha 256: 7c780ba85211ba40c7535b3f10f12312f9edeaa10030228ba21a96724469a325 + * sha 512: 9a56ba16c2aed6f17d4098e54900a5d25602f986e3606dd6ed26563c1920c66404b210dbca9f41bfcc3284bf5a42b750263bcaa2317320f8725e8f9c66e8b893 + 1.8.1 cagebreak * sha 256: e3247281d21525413790e3feceae129d9b0559497615d3fdd64ec2fc4ab9ab3d diff --git a/idle_inhibit_v1.c b/idle_inhibit_v1.c index 7da2dd7..8ebc768 100644 --- a/idle_inhibit_v1.c +++ b/idle_inhibit_v1.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2019 Jente Hidskes * * See the LICENSE file accompanying this file. diff --git a/input_manager.c b/input_manager.c index 10f94fa..2157b43 100644 --- a/input_manager.c +++ b/input_manager.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * * See the LICENSE file accompanying this file. diff --git a/ipc_server.c b/ipc_server.c index a7c6f21..7301867 100644 --- a/ipc_server.c +++ b/ipc_server.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * * See the LICENSE file accompanying this file. diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index 4bffac7..670c58e 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(1) "Version 1.8.1" "Cagebreak Manual" +cagebreak-config(1) "Version 1.8.2" "Cagebreak Manual" # NAME @@ -286,7 +286,7 @@ See GitHub Issues: # LICENSE -Copyright (c) 2020-2021 The Cagebreak authors +Copyright (c) 2020-2022 The Cagebreak authors Copyright (c) 2018-2020 Jente Hidskes Copyright (c) 2019 The Sway authors diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index ccbe02f..cfb0a22 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 1.8.1" "Cagebreak Manual" +cagebreak(1) "Version 1.8.2" "Cagebreak Manual" # NAME @@ -75,7 +75,7 @@ See GitHub Issues: # LICENSE -Copyright (c) 2020-2021 The Cagebreak authors +Copyright (c) 2020-2022 The Cagebreak authors Copyright (c) 2018-2020 Jente Hidskes Copyright (c) 2019 The Sway authors diff --git a/meson.build b/meson.build index 15806f5..b81b261 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('cagebreak', 'c', - version: '1.8.1', + version: '1.8.2', license: 'MIT', default_options: [ 'c_std=c11', @@ -213,9 +213,9 @@ reproducible_build_versions = { 'libevdev': '1.12.0', 'libudev': '249', 'pixman': '0.40.0', - 'pango': '1.48.10', + 'pango': '1.50.0', 'cairo': '1.17.4', - 'pangocairo': '1.48.10', + 'pangocairo': '1.50.0', 'math': '-1' } @@ -270,7 +270,7 @@ if get_option('man-pages') output : 'cagebreak.1', input : 'man/cagebreak.1.md', capture : true, - command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1636733005 ; @0@ < @INPUT@'.format(scdoc.path())], + command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1638785664 ; @0@ < @INPUT@'.format(scdoc.path())], install: true, install_dir: mandir1 ) @@ -279,7 +279,7 @@ if get_option('man-pages') output : 'cagebreak-config.5', input : 'man/cagebreak-config.5.md', capture : true, - command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1636733005 ; @0@ < @INPUT@'.format(scdoc.path())], + command : [sh, '-c', 'export SOURCE_DATE_EPOCH=1638785664 ; @0@ < @INPUT@'.format(scdoc.path())], install: true, install_dir: mandir5 ) diff --git a/output.c b/output.c index 028f8b8..8feaec9 100644 --- a/output.c +++ b/output.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * Copyright (C) 2019 The Sway authors * diff --git a/render.c b/render.c index 80c769b..ca4a2d2 100644 --- a/render.c +++ b/render.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * Copyright (C) 2019 The Sway authors * diff --git a/seat.c b/seat.c index 91ab374..280b3ea 100644 --- a/seat.c +++ b/seat.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * * See the LICENSE file accompanying this file. diff --git a/server.c b/server.c index 1ad23e6..e5b6137 100644 --- a/server.c +++ b/server.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2019 Jente Hidskes * * See the LICENSE file accompanying this file. diff --git a/signatures/1.8.1-cagebreak-config.5.sig b/signatures/1.8.1-cagebreak-config.5.sig new file mode 100644 index 0000000..a8dcddb Binary files /dev/null and b/signatures/1.8.1-cagebreak-config.5.sig differ diff --git a/signatures/1.8.1-cagebreak.1.sig b/signatures/1.8.1-cagebreak.1.sig new file mode 100644 index 0000000..1ded6a2 Binary files /dev/null and b/signatures/1.8.1-cagebreak.1.sig differ diff --git a/signatures/1.8.2.sig b/signatures/1.8.2.sig new file mode 100644 index 0000000..ecd7a25 Binary files /dev/null and b/signatures/1.8.2.sig differ diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig index a8dcddb..ee831f3 100644 Binary files a/signatures/cagebreak-config.5.sig and b/signatures/cagebreak-config.5.sig differ diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig index 1ded6a2..e4133eb 100644 Binary files a/signatures/cagebreak.1.sig and b/signatures/cagebreak.1.sig differ diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig index ecd7a25..1aab7aa 100644 Binary files a/signatures/cagebreak.sig and b/signatures/cagebreak.sig differ diff --git a/util.c b/util.c index 83b7e66..1e7fa7c 100644 --- a/util.c +++ b/util.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2019 The Sway authors * * See the LICENSE file accompanying this file. diff --git a/view.c b/view.c index 19ae2ad..09fc463 100644 --- a/view.c +++ b/view.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * * See the LICENSE file accompanying this file. @@ -51,10 +51,9 @@ view_get_prev_view(struct cg_view *view) { void view_damage_child(struct cg_view_child *child, bool whole) { - int x, y; - child->get_coords(child, &x, &y); - output_damage_surface(child->view->workspace->output, child->wlr_surface, - x + child->view->ox, y + child->view->oy, whole); + if(child->view != NULL) { + view_damage_part(child->view); + } } static void @@ -138,30 +137,6 @@ subsurface_handle_destroy(struct wl_listener *listener, void *_data) { subsurface_destroy(view_child); } -static void -subsurface_get_coords(struct cg_view_child *child, int *x, int *y) { - struct wlr_surface *surface = child->wlr_surface; - *x = *y = 0; - - if(child->parent && child->parent->get_coords) { - int sx, sy; - child->parent->get_coords(child->parent, &sx, &sy); - *x += sx; - *y += sy; - } else { - while(surface && wlr_surface_is_subsurface(surface)) { - struct wlr_subsurface *subsurface = - wlr_subsurface_from_wlr_surface(surface); - if(subsurface == NULL) { - break; - } - *x += subsurface->current.x; - *y += subsurface->current.y; - surface = subsurface->parent; - } - } -} - static void subsurface_create(struct cg_view_child *parent, struct cg_view *view, struct wlr_subsurface *wlr_subsurface) { @@ -173,7 +148,6 @@ subsurface_create(struct cg_view_child *parent, struct cg_view *view, view_child_init(&subsurface->view_child, parent, view, wlr_subsurface->surface); subsurface->view_child.destroy = subsurface_destroy; - subsurface->view_child.get_coords = subsurface_get_coords; subsurface->wlr_subsurface = wlr_subsurface; subsurface->destroy.notify = subsurface_handle_destroy; @@ -279,6 +253,11 @@ view_unmap(struct cg_view *view) { if(view->wlr_surface == NULL) { return; } + + struct cg_view_child *child, *tmp; + wl_list_for_each_safe(child, tmp, &view->children, link) { + child->destroy(child); + } #if CG_HAS_XWAYLAND if((view->type != CG_XWAYLAND_VIEW || xwayland_view_should_manage(view))) #endif @@ -323,11 +302,6 @@ view_unmap(struct cg_view *view) { wl_list_remove(&view->new_subsurface.link); view->wlr_surface = NULL; - - struct cg_view_child *child, *tmp; - wl_list_for_each_safe(child, tmp, &view->children, link) { - child->destroy(child); - } } void diff --git a/view.h b/view.h index add26b0..62a1f32 100644 --- a/view.h +++ b/view.h @@ -62,7 +62,6 @@ struct cg_view_child { struct wl_listener new_subsurface; void (*destroy)(struct cg_view_child *child); - void (*get_coords)(struct cg_view_child *child, int *x, int *y); }; struct cg_subsurface { diff --git a/workspace.c b/workspace.c index 36bea40..1b701e8 100644 --- a/workspace.c +++ b/workspace.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2019 Jente Hidskes * * See the LICENSE file accompanying this file. diff --git a/xdg_shell.c b/xdg_shell.c index 0e76dc4..7972b5f 100644 --- a/xdg_shell.c +++ b/xdg_shell.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2019 Jente Hidskes * * See the LICENSE file accompanying this file. @@ -119,22 +119,6 @@ popup_unconstrain(struct cg_xdg_popup *popup) { wlr_xdg_popup_unconstrain_from_box(popup->wlr_popup, &output_toplevel_box); } -static void -xdg_popup_get_coords(struct cg_view_child *child, int *x, int *y) { - if(!child) { - return; - } - struct cg_xdg_popup *popup = (struct cg_xdg_popup *)child; - struct wlr_xdg_surface *surface = popup->wlr_popup->base; - - int x_offset = -surface->geometry.x; - int y_offset = -surface->geometry.y; - - wlr_xdg_popup_get_toplevel_coords( - surface->popup, x_offset + surface->popup->geometry.x, - y_offset + surface->popup->geometry.y, x, y); -} - static void xdg_popup_create(struct cg_view *view, struct wlr_xdg_popup *wlr_popup) { struct cg_xdg_popup *popup = calloc(1, sizeof(struct cg_xdg_popup)); @@ -143,7 +127,6 @@ xdg_popup_create(struct cg_view *view, struct wlr_xdg_popup *wlr_popup) { } popup->wlr_popup = wlr_popup; - popup->view_child.get_coords = xdg_popup_get_coords; view_child_init(&popup->view_child, NULL, view, wlr_popup->base->surface); popup->view_child.destroy = xdg_popup_destroy; popup->destroy.notify = handle_xdg_popup_destroy; diff --git a/xwayland.c b/xwayland.c index b790527..daf3658 100644 --- a/xwayland.c +++ b/xwayland.c @@ -1,7 +1,7 @@ /* * Cagebreak: A Wayland tiling compositor. * - * Copyright (C) 2020 The Cagebreak Authors + * Copyright (C) 2020-2022 The Cagebreak Authors * Copyright (C) 2018-2020 Jente Hidskes * * See the LICENSE file accompanying this file.