[mutter/wip/tablet-protocol-v2: 127/149] wayland: Add update() phase to MetaWaylandTabletPad



commit b68247d51e5ebc96b1f952c9a6ac9a88e4171fe3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Jun 22 18:40:23 2016 +0200

    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 3e06434..a573725 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 aa90963..a627226 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 26ba99c..23a26ee 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;
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]