[PATCH 1/3] Revert "Fix a crash when unlocking or unconfining a pointer"

Dima Ryazanov dima at gmail.com
Thu Nov 15 06:25:53 UTC 2018


This reverts commit e0dc5d47cb5f29deec495efd958fcd5f6f833389.

Signed-off-by: Dima Ryazanov <dima at gmail.com>
---
 clients/window.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/clients/window.c b/clients/window.c
index 12939cb7..1ab33545 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -286,7 +286,6 @@ struct window {
 	confined_pointer_unconfined_handler_t pointer_unconfined_handler;
 
 	struct zwp_confined_pointer_v1 *confined_pointer;
-	struct input *confined_input;
 	struct widget *confined_widget;
 	bool confined;
 
@@ -4793,8 +4792,8 @@ static void
 locked_pointer_locked(void *data,
 		      struct zwp_locked_pointer_v1 *locked_pointer)
 {
-	struct window *window = data;
-	struct input *input = window->locked_input;
+	struct input *input = data;
+	struct window *window = input->pointer_focus;
 
 	window->pointer_locked = true;
 
@@ -4809,8 +4808,8 @@ static void
 locked_pointer_unlocked(void *data,
 			struct zwp_locked_pointer_v1 *locked_pointer)
 {
-	struct window *window = data;
-	struct input *input = window->locked_input;
+	struct input *input = data;
+	struct window *window = input->pointer_focus;
 
 	window_unlock_pointer(window);
 
@@ -4865,7 +4864,7 @@ window_lock_pointer(struct window *window, struct input *input)
 							ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT);
 	zwp_locked_pointer_v1_add_listener(locked_pointer,
 					   &locked_pointer_listener,
-					   window);
+					   input);
 
 	window->locked_input = input;
 	window->locked_pointer = locked_pointer;
@@ -4907,8 +4906,8 @@ static void
 confined_pointer_confined(void *data,
 			  struct zwp_confined_pointer_v1 *confined_pointer)
 {
-	struct window *window = data;
-	struct input *input = window->confined_input;
+	struct input *input = data;
+	struct window *window = input->pointer_focus;
 
 	window->confined = true;
 
@@ -4923,8 +4922,8 @@ static void
 confined_pointer_unconfined(void *data,
 			    struct zwp_confined_pointer_v1 *confined_pointer)
 {
-	struct window *window = data;
-	struct input *input = window->confined_input;
+	struct input *input = data;
+	struct window *window = input->pointer_focus;
 
 	window_unconfine_pointer(window);
 
@@ -4989,9 +4988,8 @@ window_confine_pointer_to_rectangles(struct window *window,
 
 	zwp_confined_pointer_v1_add_listener(confined_pointer,
 					     &confined_pointer_listener,
-					     window);
+					     input);
 
-	window->confined_input = input;
 	window->confined_pointer = confined_pointer;
 	window->confined_widget = NULL;
 
@@ -5052,7 +5050,6 @@ window_unconfine_pointer(struct window *window)
 	zwp_confined_pointer_v1_destroy(window->confined_pointer);
 	window->confined_pointer = NULL;
 	window->confined = false;
-	window->confined_input = NULL;
 }
 
 static void
-- 
2.19.1



More information about the wayland-devel mailing list