summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/wlroots/0001-backend-wayland-downgrade-to-wl_compositor-v3.patch56
-rw-r--r--pkgs/development/libraries/wlroots/default.nix4
2 files changed, 60 insertions, 0 deletions
diff --git a/pkgs/development/libraries/wlroots/0001-backend-wayland-downgrade-to-wl_compositor-v3.patch b/pkgs/development/libraries/wlroots/0001-backend-wayland-downgrade-to-wl_compositor-v3.patch
new file mode 100644
index 00000000000..bec35f4d20c
--- /dev/null
+++ b/pkgs/development/libraries/wlroots/0001-backend-wayland-downgrade-to-wl_compositor-v3.patch
@@ -0,0 +1,56 @@
+From 3b37c19286b621f266e6d447cd16f1f59a3cc24c Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Thu, 23 Jan 2020 14:35:41 +0000
+Subject: [PATCH] backend/wayland: downgrade to wl_compositor v3
+
+Sommelier does not support v4.
+
+Rather than calculating exact surface-relative damage regions instead
+of the previous buffer-relative ones, just damage the whole surface.
+It'll do for now.
+---
+ backend/wayland/backend.c |  2 +-
+ backend/wayland/output.c  | 14 +-------------
+ 2 files changed, 2 insertions(+), 14 deletions(-)
+
+diff --git a/backend/wayland/backend.c b/backend/wayland/backend.c
+index e5858158..67f848ba 100644
+--- a/backend/wayland/backend.c
++++ b/backend/wayland/backend.c
+@@ -101,7 +101,7 @@ static void registry_global(void *data, struct wl_registry *registry,
+
+         if (strcmp(iface, wl_compositor_interface.name) == 0) {
+                 wl->compositor = wl_registry_bind(registry, name,
+-                        &wl_compositor_interface, 4);
++                        &wl_compositor_interface, 3);
+         } else if (strcmp(iface, wl_seat_interface.name) == 0) {
+                 wl->seat = wl_registry_bind(registry, name,
+                         &wl_seat_interface, 5);
+diff --git a/backend/wayland/output.c b/backend/wayland/output.c
+index 7a3a08d0..f332ad93 100644
+--- a/backend/wayland/output.c
++++ b/backend/wayland/output.c
+@@ -248,19 +248,7 @@ static bool output_commit(struct wlr_output *wlr_output) {
+                         wl_surface_attach(output->surface,
+                                 output->pending_buffer->wl_buffer, 0, 0);
+
+-                        if (damage == NULL) {
+-                                wl_surface_damage_buffer(output->surface,
+-                                        0, 0, INT32_MAX, INT32_MAX);
+-                        } else {
+-                                int rects_len;
+-                                pixman_box32_t *rects =
+-                                        pixman_region32_rectangles(damage, &rects_len);
+-                                for (int i = 0; i < rects_len; i++) {
+-                                        pixman_box32_t *r = &rects[i];
+-                                        wl_surface_damage_buffer(output->surface, r->x1, r->y1,
+-                                                r->x2 - r->x1, r->y2 - r->y1);
+-                                }
+-                        }
++                        wl_surface_damage(output->surface, 0, 0, INT32_MAX, INT32_MAX);
+                         wl_surface_commit(output->surface);
+
+                         output->pending_buffer = NULL;
+--
+2.24.1
+
diff --git a/pkgs/development/libraries/wlroots/default.nix b/pkgs/development/libraries/wlroots/default.nix
index 9f9c4acb0d8..ef3666f2e1a 100644
--- a/pkgs/development/libraries/wlroots/default.nix
+++ b/pkgs/development/libraries/wlroots/default.nix
@@ -15,6 +15,10 @@ stdenv.mkDerivation rec {
     sha256 = "0c0q1p9yss5kx4430ik3n89drqpmm2bvgl8fjlf6prac1a7xzqn8";
   };
 
+  patches = [
+    ./0001-backend-wayland-downgrade-to-wl_compositor-v3.patch
+  ];
+
   # $out for the library and $examples for the example programs (in examples):
   outputs = [ "out" "examples" ];