[PATCH 3/5] compositor: use new drag icon listener for setting up drag surfaces

Ander Conselvan de Oliveira ander.conselvan.de.oliveira at intel.com
Tue Mar 13 08:23:57 PDT 2012


---
 src/compositor.c |   16 ++++++++++++++++
 src/compositor.h |    2 ++
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index dc80764..f18386a 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1887,6 +1887,18 @@ bind_input_device(struct wl_client *client,
 	resource->destroy = unbind_input_device;
 }
 
+static void
+device_handle_new_drag_icon(struct wl_listener *listener,
+			    struct wl_resource *resource, uint32_t time)
+{
+	struct weston_input_device *device;
+
+	device = container_of(listener, struct weston_input_device,
+			      new_drag_icon_listener);
+
+	weston_input_update_drag_surface(&device->input_device, 0, 0);
+}
+
 WL_EXPORT void
 weston_input_device_init(struct weston_input_device *device,
 			 struct weston_compositor *ec)
@@ -1907,6 +1919,10 @@ weston_input_device_init(struct weston_input_device *device,
 	device->drag_surface_destroy_listener.func = handle_drag_surface_destroy;
 
 	wl_list_insert(ec->input_device_list.prev, &device->link);
+
+	device->new_drag_icon_listener.func = device_handle_new_drag_icon;
+	wl_list_insert(device->input_device.drag_icon_listener_list.prev,
+		       &device->new_drag_icon_listener.link);
 }
 
 WL_EXPORT void
diff --git a/src/compositor.h b/src/compositor.h
index 669e3f4..bc32561 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -119,6 +119,8 @@ struct weston_input_device {
 	struct wl_listener touch_focus_listener;
 	struct wl_resource *touch_focus_resource;
 	struct wl_listener touch_focus_resource_listener;
+
+	struct wl_listener new_drag_icon_listener;
 };
 
 struct weston_shader {
-- 
1.7.4.1



More information about the wayland-devel mailing list