summarylogtreecommitdiffstats
path: root/use-correct-versions.patch
blob: 10e13b9ee717c0605abfb3a31856dad24a0ea662 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From 657e2966e556c78f121075c69fe1ba8d2b4dcb73 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@emersion.fr>
Date: Wed, 8 Jul 2020 11:57:35 +0200
Subject: [PATCH] Use correct versions when binding globals

Changes to protocols aren't forward-compatible. It's not possible to use
version n+1 when a client has been designed to work with version n. For
instance in wlr-screencopy v5 a new event has been added. Binding to
version 5 without upgrading the client leads to libwayland errors
because libwayland doesn't know how to handle the event.

The client needs to maintain its own version requirements.

Closes: https://github.com/cyclopsian/wdisplays/issues/18
---
 src/outputs.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/outputs.c b/src/outputs.c
index 9ebf7e5..40410ec 100644
--- a/src/outputs.c
+++ b/src/outputs.c
@@ -534,20 +534,20 @@ static void registry_handle_global(void *data, struct wl_registry *registry,
 
   if (strcmp(interface, zwlr_output_manager_v1_interface.name) == 0) {
     state->output_manager = wl_registry_bind(registry, name,
-        &zwlr_output_manager_v1_interface, version);
+        &zwlr_output_manager_v1_interface, 1);
     zwlr_output_manager_v1_add_listener(state->output_manager,
         &output_manager_listener, state);
   } else if (strcmp(interface, zxdg_output_manager_v1_interface.name) == 0) {
     state->xdg_output_manager = wl_registry_bind(registry, name,
-        &zxdg_output_manager_v1_interface, version);
+        &zxdg_output_manager_v1_interface, 3);
   } else if(strcmp(interface, zwlr_screencopy_manager_v1_interface.name) == 0) {
     state->copy_manager = wl_registry_bind(registry, name,
-        &zwlr_screencopy_manager_v1_interface, version);
+        &zwlr_screencopy_manager_v1_interface, 1);
   } else if(strcmp(interface, zwlr_layer_shell_v1_interface.name) == 0) {
     state->layer_shell = wl_registry_bind(registry, name,
-        &zwlr_layer_shell_v1_interface, version);
+        &zwlr_layer_shell_v1_interface, 1);
   } else if(strcmp(interface, wl_shm_interface.name) == 0) {
-    state->shm = wl_registry_bind(registry, name, &wl_shm_interface, version);
+    state->shm = wl_registry_bind(registry, name, &wl_shm_interface, 1);
   }
 }