aboutsummaryrefslogtreecommitdiffstats
path: root/testing/phoc/120.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/phoc/120.patch')
-rw-r--r--testing/phoc/120.patch527
1 files changed, 527 insertions, 0 deletions
diff --git a/testing/phoc/120.patch b/testing/phoc/120.patch
new file mode 100644
index 0000000000..197757b481
--- /dev/null
+++ b/testing/phoc/120.patch
@@ -0,0 +1,527 @@
+From 919bd4c6891e49451551b023035dc78b3a040467 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
+Date: Thu, 31 Oct 2019 19:21:48 +0100
+Subject: [PATCH 1/7] Adjust to wlroots 0.8.1 layer shell changes
+
+See sway commit d19f4f7bf866660d2199cb726bc3708eb42f98dd
+
+Update git submodule to b81bb2ef3040e5cf3dcffbddcb5389775c879d85
+
+build: Require recent enough wlroots
+---
+ meson.build | 2 +-
+ src/layer_shell.c | 12 +++++++-----
+ src/seat.c | 2 +-
+ subprojects/wlroots | 2 +-
+ 4 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index a583c7f..d365761 100644
+--- a/meson.build
++++ b/meson.build
+@@ -56,7 +56,7 @@ if not embed_wlroots.disabled() and wlroots_proj.found()
+ wlroots_conf = wlroots_proj.get_variable('conf_data')
+ wlroots_has_xwayland = wlroots_conf.get('WLR_HAS_XWAYLAND') == 1
+ else
+- wlroots = dependency('wlroots')
++ wlroots = dependency('wlroots', version: '>= 0.8.1')
+ wlroots_has_xwayland = cc.get_define('WLR_HAS_XWAYLAND', prefix: '#include <wlr/config.h>', dependencies: wlroots) == '1'
+ endif
+
+diff --git a/src/layer_shell.c b/src/layer_shell.c
+index 29931c6..d45238d 100644
+--- a/src/layer_shell.c
++++ b/src/layer_shell.c
+@@ -236,9 +236,9 @@ static void change_osk(const struct osk_origin *osk, struct wl_list layers[LAYER
+ wl_list_insert(&layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY], &osk->surface->link);
+ }
+
+- if (!force_overlay && osk->layer != osk->surface->layer_surface->layer) {
++ if (!force_overlay && osk->layer != osk->surface->layer_surface->client_pending.layer) {
+ wl_list_remove(&osk->surface->link);
+- wl_list_insert(&layers[osk->surface->layer_surface->layer], &osk->surface->link);
++ wl_list_insert(&layers[osk->surface->layer_surface->client_pending.layer], &osk->surface->link);
+ }
+ }
+
+@@ -254,7 +254,8 @@ void arrange_layers(struct roots_output *output) {
+ bool osk_force_overlay = false;
+ struct roots_seat *seat;
+ wl_list_for_each(seat, &server->input->seats, link) {
+- if (seat->focused_layer && seat->focused_layer->layer >= osk_place.surface->layer_surface->layer) {
++ if (seat->focused_layer && seat->focused_layer->client_pending.layer >=
++ osk_place.surface->layer_surface->client_pending.layer) {
+ osk_force_overlay = true;
+ break;
+ }
+@@ -733,7 +734,8 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
+ wl_container_of(listener, desktop, layer_shell_surface);
+ wlr_log(WLR_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
+ "size %dx%d margin %d,%d,%d,%d",
+- layer_surface->namespace, layer_surface->layer, layer_surface->layer,
++ layer_surface->namespace, layer_surface->client_pending.layer,
++ layer_surface->client_pending.layer,
+ layer_surface->client_pending.desired_width,
+ layer_surface->client_pending.desired_height,
+ layer_surface->client_pending.margin.top,
+@@ -793,7 +795,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
+ layer_surface->data = roots_surface;
+
+ struct roots_output *output = layer_surface->output->data;
+- wl_list_insert(&output->layers[layer_surface->layer], &roots_surface->link);
++ wl_list_insert(&output->layers[layer_surface->client_pending.layer], &roots_surface->link);
+
+ // Temporarily set the layer's current state to client_pending
+ // So that we can easily arrange it
+diff --git a/src/seat.c b/src/seat.c
+index 9171ba4..6a3e94e 100644
+--- a/src/seat.c
++++ b/src/seat.c
+@@ -1507,7 +1507,7 @@ void roots_seat_set_focus_layer(struct roots_seat *seat,
+ view_activate(prev_focus, false);
+ }
+ seat->has_focus = false;
+- if (layer->layer >= ZWLR_LAYER_SHELL_V1_LAYER_TOP) {
++ if (layer->current.layer >= ZWLR_LAYER_SHELL_V1_LAYER_TOP) {
+ seat->focused_layer = layer;
+ }
+ if (keyboard != NULL) {
+--
+2.24.1
+
+
+From 887a258e4b9ab52056d0c0b821d6c38f2582ef0f Mon Sep 17 00:00:00 2001
+From: Simon Ser <contact@emersion.fr>
+Date: Thu, 12 Dec 2019 18:45:35 +0100
+Subject: [PATCH 2/7] Update to new presentation-time API
+
+(cherry picked from rootston commit 877fcac37faac1e276a5790ef55dd161d49e23c2)
+---
+ src/output.c | 30 ------------------------------
+ src/output.h | 1 -
+ src/render.c | 3 ++-
+ subprojects/wlroots | 2 +-
+ 4 files changed, 3 insertions(+), 33 deletions(-)
+
+diff --git a/src/output.c b/src/output.c
+index 267944e..d08442f 100644
+--- a/src/output.c
++++ b/src/output.c
+@@ -11,7 +11,6 @@
+ #include <wlr/config.h>
+ #include <wlr/types/wlr_compositor.h>
+ #include <wlr/types/wlr_output_layout.h>
+-#include <wlr/types/wlr_presentation_time.h>
+ #include <wlr/types/wlr_xdg_shell_v6.h>
+ #include <wlr/types/wlr_xdg_shell.h>
+ #include <wlr/util/log.h>
+@@ -562,7 +561,6 @@ static void output_destroy(struct roots_output *output) {
+ wl_list_remove(&output->enable.link);
+ wl_list_remove(&output->mode.link);
+ wl_list_remove(&output->transform.link);
+- wl_list_remove(&output->present.link);
+ wl_list_remove(&output->damage_frame.link);
+ wl_list_remove(&output->damage_destroy.link);
+ free(output);
+@@ -607,32 +605,6 @@ static void output_handle_transform(struct wl_listener *listener, void *data) {
+ arrange_layers(output);
+ }
+
+-static void surface_send_presented_iterator(struct roots_output *output,
+- struct wlr_surface *surface, struct wlr_box *_box, float rotation,
+- void *data) {
+- struct wlr_presentation_event *event = data;
+- wlr_presentation_send_surface_presented(output->desktop->presentation,
+- surface, event);
+-}
+-
+-static void output_handle_present(struct wl_listener *listener, void *data) {
+- struct roots_output *output =
+- wl_container_of(listener, output, present);
+- struct wlr_output_event_present *output_event = data;
+-
+- struct wlr_presentation_event event = {
+- .output = output->wlr_output,
+- .tv_sec = (uint64_t)output_event->when->tv_sec,
+- .tv_nsec = (uint32_t)output_event->when->tv_nsec,
+- .refresh = (uint32_t)output_event->refresh,
+- .seq = (uint64_t)output_event->seq,
+- .flags = output_event->flags,
+- };
+-
+- output_for_each_surface(output,
+- surface_send_presented_iterator, &event);
+-}
+-
+ void handle_new_output(struct wl_listener *listener, void *data) {
+ PhocDesktop *desktop = wl_container_of(listener, desktop,
+ new_output);
+@@ -665,8 +637,6 @@ void handle_new_output(struct wl_listener *listener, void *data) {
+ wl_signal_add(&wlr_output->events.mode, &output->mode);
+ output->transform.notify = output_handle_transform;
+ wl_signal_add(&wlr_output->events.transform, &output->transform);
+- output->present.notify = output_handle_present;
+- wl_signal_add(&wlr_output->events.present, &output->present);
+
+ output->damage_frame.notify = output_damage_handle_frame;
+ wl_signal_add(&output->damage->events.frame, &output->damage_frame);
+diff --git a/src/output.h b/src/output.h
+index 5ca0544..c4e7824 100644
+--- a/src/output.h
++++ b/src/output.h
+@@ -28,7 +28,6 @@ struct roots_output {
+ struct wl_listener enable;
+ struct wl_listener mode;
+ struct wl_listener transform;
+- struct wl_listener present;
+ struct wl_listener damage_frame;
+ struct wl_listener damage_destroy;
+ };
+diff --git a/src/render.c b/src/render.c
+index ed9d339..03bee6f 100644
+--- a/src/render.c
++++ b/src/render.c
+@@ -134,7 +134,8 @@ static void render_surface_iterator(struct roots_output *output,
+ render_texture(wlr_output, output_damage,
+ texture, &box, matrix, rotation, alpha);
+
+- wlr_presentation_surface_sampled(output->desktop->presentation, surface);
++ wlr_presentation_surface_sampled_on_output(output->desktop->presentation,
++ surface, wlr_output);
+
+ collect_touch_points(output, surface, box);
+ }
+--
+2.24.1
+
+
+From ed638274b2ae0345dddfa7573568d001499f38ca Mon Sep 17 00:00:00 2001
+From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
+Date: Thu, 9 Jan 2020 02:14:24 +0100
+Subject: [PATCH 3/7] Update to wlr_output's atomic API and wlroots 0.9.x
+ branch
+
+build: Require recent enough wlroots
+---
+ meson.build | 2 +-
+ src/desktop.c | 1 +
+ src/output.c | 11 +++++++----
+ src/render.c | 1 +
+ subprojects/wlroots | 2 +-
+ 5 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index d365761..9ad5e82 100644
+--- a/meson.build
++++ b/meson.build
+@@ -56,7 +56,7 @@ if not embed_wlroots.disabled() and wlroots_proj.found()
+ wlroots_conf = wlroots_proj.get_variable('conf_data')
+ wlroots_has_xwayland = wlroots_conf.get('WLR_HAS_XWAYLAND') == 1
+ else
+- wlroots = dependency('wlroots', version: '>= 0.8.1')
++ wlroots = dependency('wlroots', version: '>= 0.9.0')
+ wlroots_has_xwayland = cc.get_define('WLR_HAS_XWAYLAND', prefix: '#include <wlr/config.h>', dependencies: wlroots) == '1'
+ endif
+
+diff --git a/src/desktop.c b/src/desktop.c
+index 39c74d3..a1b1064 100644
+--- a/src/desktop.c
++++ b/src/desktop.c
+@@ -624,6 +624,7 @@ phoc_desktop_toggle_output_blank (PhocDesktop *self)
+ gboolean enable = !output->wlr_output->enabled;
+
+ wlr_output_enable (output->wlr_output, enable);
++ wlr_output_commit (output->wlr_output);
+ if (enable)
+ output_damage_whole(output);
+ }
+diff --git a/src/output.c b/src/output.c
+index d08442f..68bef03 100644
+--- a/src/output.c
++++ b/src/output.c
+@@ -505,8 +505,9 @@ void handle_output_manager_apply(struct wl_listener *listener, void *data) {
+ wl_list_for_each(config_head, &config->heads, link) {
+ struct wlr_output *wlr_output = config_head->state.output;
+ if (!config_head->state.enabled) {
+- ok &= wlr_output_enable(wlr_output, false);
++ wlr_output_enable(wlr_output, false);
+ wlr_output_layout_remove(desktop->layout, wlr_output);
++ ok &= wlr_output_commit(wlr_output);
+ }
+ }
+
+@@ -516,11 +517,11 @@ void handle_output_manager_apply(struct wl_listener *listener, void *data) {
+ if (!config_head->state.enabled) {
+ continue;
+ }
+- ok &= wlr_output_enable(wlr_output, true);
++ wlr_output_enable(wlr_output, true);
+ if (config_head->state.mode != NULL) {
+- ok &= wlr_output_set_mode(wlr_output, config_head->state.mode);
++ wlr_output_set_mode(wlr_output, config_head->state.mode);
+ } else {
+- ok &= wlr_output_set_custom_mode(wlr_output,
++ wlr_output_set_custom_mode(wlr_output,
+ config_head->state.custom_mode.width,
+ config_head->state.custom_mode.height,
+ config_head->state.custom_mode.refresh);
+@@ -529,6 +530,7 @@ void handle_output_manager_apply(struct wl_listener *listener, void *data) {
+ config_head->state.x, config_head->state.y);
+ wlr_output_set_transform(wlr_output, config_head->state.transform);
+ wlr_output_set_scale(wlr_output, config_head->state.scale);
++ ok &= wlr_output_commit(wlr_output);
+ }
+
+ if (ok) {
+@@ -683,6 +685,7 @@ void handle_new_output(struct wl_listener *listener, void *data) {
+ }
+ wlr_output_layout_add_auto(desktop->layout, wlr_output);
+ }
++ wlr_output_commit(wlr_output);
+
+ struct roots_seat *seat;
+ wl_list_for_each(seat, &input->seats, link) {
+diff --git a/src/render.c b/src/render.c
+index 03bee6f..8490b5a 100644
+--- a/src/render.c
++++ b/src/render.c
+@@ -456,6 +456,7 @@ void output_render(struct roots_output *output) {
+
+ if (!needs_frame) {
+ // Output doesn't need swap and isn't damaged, skip rendering completely
++ wlr_output_rollback(wlr_output);
+ goto buffer_damage_finish;
+ }
+
+--
+2.24.1
+
+
+From a1651088b49db442f2dc9c82a74c6a52c6c073a8 Mon Sep 17 00:00:00 2001
+From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
+Date: Thu, 9 Jan 2020 06:17:28 +0100
+Subject: [PATCH 4/7] layer-shell: Fix incorrect variable passed to debug log
+
+---
+ src/layer_shell.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/layer_shell.c b/src/layer_shell.c
+index d45238d..8a19739 100644
+--- a/src/layer_shell.c
++++ b/src/layer_shell.c
+@@ -735,7 +735,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
+ wlr_log(WLR_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
+ "size %dx%d margin %d,%d,%d,%d",
+ layer_surface->namespace, layer_surface->client_pending.layer,
+- layer_surface->client_pending.layer,
++ layer_surface->client_pending.anchor,
+ layer_surface->client_pending.desired_width,
+ layer_surface->client_pending.desired_height,
+ layer_surface->client_pending.margin.top,
+--
+2.24.1
+
+
+From 795ebe8b4b60884caf3f2a2fb0884ca84866db11 Mon Sep 17 00:00:00 2001
+From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
+Date: Thu, 9 Jan 2020 06:20:04 +0100
+Subject: [PATCH 5/7] layer-shell: Handle layer changes
+
+Fixes #92
+---
+ src/layer_shell.c | 11 ++++++++++-
+ src/layers.h | 1 +
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/src/layer_shell.c b/src/layer_shell.c
+index 8a19739..3951e47 100644
+--- a/src/layer_shell.c
++++ b/src/layer_shell.c
+@@ -360,7 +360,16 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
+ update_cursors(layer, &server->input->seats);
+ }
+
+- if (memcmp(&old_geo, &layer->geo, sizeof(struct wlr_box)) != 0) {
++ bool geo_changed =
++ memcmp(&old_geo, &layer->geo, sizeof(struct wlr_box)) != 0;
++ bool layer_changed = layer->layer != layer_surface->current.layer;
++ if (layer_changed) {
++ wl_list_remove(&layer->link);
++ wl_list_insert(&output->layers[layer_surface->current.layer],
++ &layer->link);
++ layer->layer = layer_surface->current.layer;
++ }
++ if (geo_changed || layer_changed) {
+ output_damage_whole_local_surface(output, layer_surface->surface,
+ old_geo.x, old_geo.y);
+ output_damage_whole_local_surface(output, layer_surface->surface,
+diff --git a/src/layers.h b/src/layers.h
+index a0bccae..a9afdaa 100644
+--- a/src/layers.h
++++ b/src/layers.h
+@@ -25,6 +25,7 @@ struct roots_layer_surface {
+ struct wl_list subsurfaces; // roots_layer_subsurface::link
+
+ struct wlr_box geo;
++ enum zwlr_layer_shell_v1_layer layer;
+ };
+
+ struct roots_layer_popup {
+--
+2.24.1
+
+
+From 85fa0813a1e6e01165d357ab3745708e47c93d90 Mon Sep 17 00:00:00 2001
+From: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
+Date: Mon, 13 Jan 2020 21:55:19 +0100
+Subject: [PATCH 7/7] CI: Use the CI repo in Buster builds for newer Meson
+
+---
+ .gitlab-ci.yml | 53 ++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 32 insertions(+), 21 deletions(-)
+
+diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
+index 20e61c0..18bec62 100644
+--- a/.gitlab-ci.yml
++++ b/.gitlab-ci.yml
+@@ -8,6 +8,7 @@ variables:
+ ALPINE_EDGE_DEPS: |
+ git meson ninja gnome-desktop-dev gobject-introspection-dev
+ libinput-dev wayland-dev wayland-protocols libxkbcommon-dev wlroots-dev
++ DEB_BUILD_PROFILES: pkg.phoc.embedwlroots
+
+ .tags: &tags
+ tags:
+@@ -21,14 +22,28 @@ variables:
+ - ninja -C _build
+ - ninja -C _build install
+
+-before_script:
+- - apt-get -y update
+- - apt-get -y install $DEPS
+- - DEB_BUILD_PROFILES=pkg.phoc.embedwlroots apt-get -y build-dep .
++.before_script_debian: &before_script_debian
++ - apt-get -y update
++ - apt-get -y install $DEPS
++ - apt-get -y build-dep .
++
++.before_script_debian_buster: &before_script_debian_buster
++ # meson in buster is too old
++ - apt-get -y update
++ - apt-get -y install wget ca-certificates gnupg
++ - wget -O- https://ci.puri.sm/ci-repo.key | apt-key add -
++ - echo "deb https://ci.puri.sm/ scratch librem5" > /etc/apt/sources.list.d/ci.list
++ - *before_script_debian
++
++.before_script_alpine: &before_script_alpine
++ - apk -q add alpine-sdk
++ - apk -q add $ALPINE_EDGE_DEPS
++
+
+ build-with-xwayland-debian-buster:
+ stage: build
+ image: debian:buster
++ before_script: *before_script_debian_buster
+ variables:
+ BUILD_ARGS: -Dxwayland=enabled
+ <<: *tags
+@@ -40,6 +55,7 @@ build-with-xwayland-debian-buster:
+ build-with-xwayland-debian-bullseye:
+ stage: build
+ image: debian:bullseye
++ before_script: *before_script_debian
+ variables:
+ BUILD_ARGS: -Dxwayland=enabled
+ <<: *tags
+@@ -48,6 +64,7 @@ build-with-xwayland-debian-bullseye:
+ build-without-xwayland-debian-buster:
+ stage: build
+ image: debian:buster
++ before_script: *before_script_debian_buster
+ variables:
+ BUILD_ARGS: -Dxwayland=disabled
+ <<: *tags
+@@ -56,9 +73,7 @@ build-without-xwayland-debian-buster:
+ build-with-xwayland-alpinelinux-edge:
+ stage: build
+ image: alpine:edge
+- before_script:
+- - apk -q add alpine-sdk
+- - apk -q add $ALPINE_EDGE_DEPS
++ before_script: *before_script_alpine
+ variables:
+ BUILD_ARGS: -Dxwayland=enabled
+ <<: *tags
+@@ -68,9 +83,7 @@ build-with-xwayland-alpinelinux-edge:
+ build-without-xwayland-alpinelinux-edge:
+ stage: build
+ image: alpine:edge
+- before_script:
+- - apk -q add alpine-sdk
+- - apk -q add $ALPINE_EDGE_DEPS
++ before_script: *before_script_alpine
+ variables:
+ BUILD_ARGS: -Dxwayland=disabled
+ <<: *tags
+@@ -84,6 +97,7 @@ unit-test-with-xwayland-debian-buster:
+ image: debian:buster
+ dependencies:
+ - build-with-xwayland-debian-buster
++ before_script: *before_script_debian_buster
+ script:
+ - xvfb-run ninja -C _build test
+ artifacts:
+@@ -95,9 +109,10 @@ package-deb-with-wlroots:
+ <<: *tags
+ stage: package
+ image: debian:buster
++ before_script: *before_script_debian_buster
+ script:
+ - git submodule update --init
+- - DEB_BUILD_PROFILES=pkg.phoc.embedwlroots dpkg-buildpackage -uc -us
++ - dpkg-buildpackage -uc -us
+ # Must not be dynamically linked against wlroots
+ - ldd debian/phoc/usr/bin/phoc | grep -qs libwlroots && exit 1 || true
+ - cp ../*.deb .
+@@ -109,15 +124,9 @@ package-deb-without-wlroots:
+ <<: *tags
+ stage: package
+ image: debian:buster
+- before_script:
+- - echo "deb http://deb.debian.org/debian/ experimental main" > /etc/apt/sources.list.d/experimental.list
+- - apt-get -y update
+- - apt-get -y install $DEPS
+- # This pulls in wlroots build-deps and so avoids pulling in e.g. mesa from
+- # experimental due to pulling wlroots from experimental
+- # Once we have wlroots in our archive we can drop the build profile
+- - DEB_BUILD_PROFILES=pkg.phoc.embedwlroots apt-get -y build-dep .
+- - apt-get -y -t experimental install libwlroots-dev
++ before_script: *before_script_debian_buster
++ variables:
++ DEB_BUILD_PROFILES: ""
+ script:
+ - dpkg-buildpackage -uc -us
+ # Must be dynamically linked against wlroots
+@@ -126,15 +135,17 @@ package-deb-without-wlroots:
+ artifacts:
+ paths:
+ - "*.deb"
++ allow_failure: true # temporarily until recent wlroots hits the CI repo
+
+ package-deb-with-wlroots:arm64:
+ tags:
+ - librem5:arm64
+ stage: package
+ image: debian:buster
++ before_script: *before_script_debian_buster
+ script:
+ - git submodule update --init
+- - DEB_BUILD_PROFILES=pkg.phoc.embedwlroots dpkg-buildpackage -uc -us
++ - dpkg-buildpackage -uc -us
+ # Must not be dynamically linked against wlroots
+ - ldd debian/phoc/usr/bin/phoc | grep -qs libwlroots && exit 1 || true
+ - cp ../*.deb .
+--
+2.24.1
+