From b68247d51e5ebc96b1f952c9a6ac9a88e4171fe3 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 22 Jun 2016 18:40:23 +0200 Subject: [PATCH] wayland: Add update() phase to MetaWaylandTabletPad This will be needed to update internal state of pad groups. --- src/wayland/meta-wayland-tablet-pad.c | 24 ++++++++++++++++++++++++ src/wayland/meta-wayland-tablet-pad.h | 2 ++ src/wayland/meta-wayland-tablet-seat.c | 25 ++++++++++++++++++------- 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/wayland/meta-wayland-tablet-pad.c b/src/wayland/meta-wayland-tablet-pad.c index 3e06434b8..a5737259e 100644 --- a/src/wayland/meta-wayland-tablet-pad.c +++ b/src/wayland/meta-wayland-tablet-pad.c @@ -368,3 +368,27 @@ meta_wayland_tablet_pad_set_focus (MetaWaylandTabletPad *pad, meta_wayland_tablet_pad_update_groups_focus (pad); } + +void +meta_wayland_tablet_pad_update (MetaWaylandTabletPad *pad, + const ClutterEvent *event) +{ + MetaWaylandTabletPadGroup *group; + guint n_group; + + n_group = clutter_event_get_mode_group (event); + group = g_list_nth_data (pad->groups, n_group); + + if (group) + meta_wayland_tablet_pad_group_update (group, event); + + switch (event->type) + { + case CLUTTER_PAD_BUTTON_PRESS: + case CLUTTER_PAD_BUTTON_RELEASE: + case CLUTTER_PAD_RING: + case CLUTTER_PAD_STRIP: + default: + break; + } +} diff --git a/src/wayland/meta-wayland-tablet-pad.h b/src/wayland/meta-wayland-tablet-pad.h index aa909639e..a62722604 100644 --- a/src/wayland/meta-wayland-tablet-pad.h +++ b/src/wayland/meta-wayland-tablet-pad.h @@ -65,6 +65,8 @@ struct wl_resource * void meta_wayland_tablet_pad_notify (MetaWaylandTabletPad *pad, struct wl_resource *resource); +void meta_wayland_tablet_pad_update (MetaWaylandTabletPad *pad, + const ClutterEvent *event); gboolean meta_wayland_tablet_pad_handle_event (MetaWaylandTabletPad *pad, const ClutterEvent *event); diff --git a/src/wayland/meta-wayland-tablet-seat.c b/src/wayland/meta-wayland-tablet-seat.c index 26ba99c02..23a26ee1a 100644 --- a/src/wayland/meta-wayland-tablet-seat.c +++ b/src/wayland/meta-wayland-tablet-seat.c @@ -386,15 +386,9 @@ meta_wayland_tablet_seat_update (MetaWaylandTabletSeat *tablet_seat, ClutterInputDevice *device; ClutterInputDeviceTool *device_tool; MetaWaylandTabletTool *tool = NULL; + MetaWaylandTabletPad *pad = NULL; device = clutter_event_get_source_device (event); - device_tool = clutter_event_get_device_tool (event); - - if (device && device_tool) - tool = meta_wayland_tablet_seat_ensure_tool (tablet_seat, device, device_tool); - - if (!tool) - return; switch (event->type) { @@ -403,8 +397,25 @@ meta_wayland_tablet_seat_update (MetaWaylandTabletSeat *tablet_seat, case CLUTTER_BUTTON_PRESS: case CLUTTER_BUTTON_RELEASE: case CLUTTER_MOTION: + device_tool = clutter_event_get_device_tool (event); + + if (device && device_tool) + tool = meta_wayland_tablet_seat_ensure_tool (tablet_seat, device, device_tool); + + if (!tool) + return; + meta_wayland_tablet_tool_update (tool, event); break; + case CLUTTER_PAD_BUTTON_PRESS: + case CLUTTER_PAD_BUTTON_RELEASE: + case CLUTTER_PAD_RING: + case CLUTTER_PAD_STRIP: + pad = g_hash_table_lookup (tablet_seat->pads, device); + if (!pad) + return; + + return meta_wayland_tablet_pad_update (pad, event); default: break; }