[mutter] seat: Move pointer interface over to MetaWaylandPointer
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] seat: Move pointer interface over to MetaWaylandPointer
- Date: Thu, 17 Apr 2014 23:17:11 +0000 (UTC)
commit 1abdd7be10b64a5e384b7e2219fa9dc002e67bbd
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Apr 17 17:16:17 2014 -0400
seat: Move pointer interface over to MetaWaylandPointer
src/wayland/meta-wayland-pointer.c | 59 ++++++++++++++++++++++++++++++++++--
src/wayland/meta-wayland-pointer.h | 6 ++-
src/wayland/meta-wayland-seat.c | 46 +---------------------------
3 files changed, 61 insertions(+), 50 deletions(-)
---
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index 7614ad9..d805877 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -57,6 +57,12 @@
static void meta_wayland_pointer_end_popup_grab (MetaWaylandPointer *pointer);
static void
+unbind_resource (struct wl_resource *resource)
+{
+ wl_list_remove (wl_resource_get_link (resource));
+}
+
+static void
set_cursor_surface (MetaWaylandPointer *pointer,
MetaWaylandSurface *surface)
{
@@ -658,9 +664,56 @@ meta_wayland_pointer_update_cursor_surface (MetaWaylandPointer *pointer)
meta_cursor_reference_unref (cursor);
}
-void
-meta_wayland_pointer_set_cursor_surface (MetaWaylandPointer *pointer,
- MetaWaylandSurface *surface)
+static void
+pointer_set_cursor (struct wl_client *client,
+ struct wl_resource *resource,
+ uint32_t serial,
+ struct wl_resource *surface_resource,
+ int32_t x, int32_t y)
{
+ MetaWaylandPointer *pointer = wl_resource_get_user_data (resource);
+ MetaWaylandSurface *surface;
+
+ surface = (surface_resource ? wl_resource_get_user_data (surface_resource) : NULL);
+
+ if (pointer->focus_surface == NULL)
+ return;
+ if (wl_resource_get_client (pointer->focus_surface->resource) != client)
+ return;
+ if (pointer->focus_serial - serial > G_MAXUINT32 / 2)
+ return;
+
+ pointer->hotspot_x = x;
+ pointer->hotspot_y = y;
set_cursor_surface (pointer, surface);
+ meta_wayland_pointer_update_cursor_surface (pointer);
+}
+
+static void
+pointer_release (struct wl_client *client,
+ struct wl_resource *resource)
+{
+ wl_resource_destroy (resource);
+}
+
+static const struct wl_pointer_interface pointer_interface = {
+ pointer_set_cursor,
+ pointer_release,
+};
+
+void
+meta_wayland_pointer_create_new_resource (MetaWaylandPointer *pointer,
+ struct wl_client *client,
+ struct wl_resource *seat_resource,
+ uint32_t id)
+{
+ struct wl_resource *cr;
+
+ cr = wl_resource_create (client, &wl_pointer_interface,
+ MIN (META_WL_POINTER_VERSION, wl_resource_get_version (seat_resource)), id);
+ wl_resource_set_implementation (cr, &pointer_interface, pointer, unbind_resource);
+ wl_list_insert (&pointer->resource_list, wl_resource_get_link (cr));
+
+ if (pointer->focus_surface && wl_resource_get_client (pointer->focus_surface->resource) == client)
+ meta_wayland_pointer_set_focus (pointer, pointer->focus_surface);
}
diff --git a/src/wayland/meta-wayland-pointer.h b/src/wayland/meta-wayland-pointer.h
index c82167d..281d4d9 100644
--- a/src/wayland/meta-wayland-pointer.h
+++ b/src/wayland/meta-wayland-pointer.h
@@ -108,7 +108,9 @@ void
meta_wayland_pointer_update_cursor_surface (MetaWaylandPointer *pointer);
void
-meta_wayland_pointer_set_cursor_surface (MetaWaylandPointer *pointer,
- MetaWaylandSurface *surface);
+meta_wayland_pointer_create_new_resource (MetaWaylandPointer *pointer,
+ struct wl_client *client,
+ struct wl_resource *seat_resource,
+ uint32_t id);
#endif /* __META_WAYLAND_POINTER_H__ */
diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c
index f9b6769..15173e9 100644
--- a/src/wayland/meta-wayland-seat.c
+++ b/src/wayland/meta-wayland-seat.c
@@ -49,58 +49,14 @@ unbind_resource (struct wl_resource *resource)
}
static void
-pointer_set_cursor (struct wl_client *client,
- struct wl_resource *resource,
- uint32_t serial,
- struct wl_resource *surface_resource,
- int32_t x, int32_t y)
-{
- MetaWaylandPointer *pointer = wl_resource_get_user_data (resource);
- MetaWaylandSurface *surface;
-
- surface = (surface_resource ? wl_resource_get_user_data (surface_resource) : NULL);
-
- if (pointer->focus_surface == NULL)
- return;
- if (wl_resource_get_client (pointer->focus_surface->resource) != client)
- return;
- if (pointer->focus_serial - serial > G_MAXUINT32 / 2)
- return;
-
- pointer->hotspot_x = x;
- pointer->hotspot_y = y;
- meta_wayland_pointer_set_cursor_surface (pointer, surface);
- meta_wayland_pointer_update_cursor_surface (pointer);
-}
-
-static void
-pointer_release (struct wl_client *client,
- struct wl_resource *resource)
-{
- wl_resource_destroy (resource);
-}
-
-static const struct wl_pointer_interface pointer_interface = {
- pointer_set_cursor,
- pointer_release,
-};
-
-static void
seat_get_pointer (struct wl_client *client,
struct wl_resource *resource,
uint32_t id)
{
MetaWaylandSeat *seat = wl_resource_get_user_data (resource);
MetaWaylandPointer *pointer = &seat->pointer;
- struct wl_resource *cr;
-
- cr = wl_resource_create (client, &wl_pointer_interface,
- MIN (META_WL_POINTER_VERSION, wl_resource_get_version (resource)), id);
- wl_resource_set_implementation (cr, &pointer_interface, pointer, unbind_resource);
- wl_list_insert (&pointer->resource_list, wl_resource_get_link (cr));
- if (pointer->focus_surface && wl_resource_get_client (pointer->focus_surface->resource) == client)
- meta_wayland_pointer_set_focus (pointer, pointer->focus_surface);
+ meta_wayland_pointer_create_new_resource (pointer, client, resource, id);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]