[mutter/gnome-3-36] clutter-event: Add device added/removed events
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-36] clutter-event: Add device added/removed events
- Date: Sat, 19 Sep 2020 14:56:22 +0000 (UTC)
commit e283b920918c5adb6acfef1a80e661a33e42e7b2
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Fri Jul 17 16:31:10 2020 +0200
clutter-event: Add device added/removed events
Add clutter device added and removed events to allow processing of them as
it happens in the backends, queuing them and performing actions in order.
This allows not to loose any event that is performed just before removing or
disabling a device, and still process the events in order in the event
queue.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1371
(cherry picked from commit 928b32b1a18f0c4abdc29b98378f5f36141fa58d)
clutter/clutter/clutter-actor.c | 3 +++
clutter/clutter/clutter-enums.h | 2 ++
clutter/clutter/clutter-event.c | 21 +++++++++++++++++++++
clutter/clutter/clutter-event.h | 13 +++++++++++++
clutter/clutter/clutter-main.c | 4 ++++
5 files changed, 43 insertions(+)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 83e4dacf16..a67c35f851 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -13995,6 +13995,9 @@ clutter_actor_event (ClutterActor *actor,
case CLUTTER_IM_PREEDIT:
detail = quark_im;
break;
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
+ break;
case CLUTTER_EVENT_LAST: /* Just keep compiler warnings quiet */
break;
}
diff --git a/clutter/clutter/clutter-enums.h b/clutter/clutter/clutter-enums.h
index f83e3b24c2..a12e7ec63e 100644
--- a/clutter/clutter/clutter-enums.h
+++ b/clutter/clutter/clutter-enums.h
@@ -937,6 +937,8 @@ typedef enum /*< prefix=CLUTTER >*/
CLUTTER_IM_COMMIT,
CLUTTER_IM_DELETE,
CLUTTER_IM_PREEDIT,
+ CLUTTER_DEVICE_ADDED,
+ CLUTTER_DEVICE_REMOVED,
CLUTTER_EVENT_LAST /* helper */
} ClutterEventType;
diff --git a/clutter/clutter/clutter-event.c b/clutter/clutter/clutter-event.c
index db580d3f5f..8a78960918 100644
--- a/clutter/clutter/clutter-event.c
+++ b/clutter/clutter/clutter-event.c
@@ -418,6 +418,8 @@ clutter_event_get_position (const ClutterEvent *event,
case CLUTTER_IM_COMMIT:
case CLUTTER_IM_DELETE:
case CLUTTER_IM_PREEDIT:
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
graphene_point_init (position, 0.f, 0.f);
break;
@@ -495,6 +497,8 @@ clutter_event_set_coords (ClutterEvent *event,
case CLUTTER_IM_COMMIT:
case CLUTTER_IM_DELETE:
case CLUTTER_IM_PREEDIT:
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
break;
case CLUTTER_ENTER:
@@ -1170,6 +1174,11 @@ clutter_event_set_device (ClutterEvent *event,
case CLUTTER_PAD_RING:
event->pad_ring.device = device;
break;
+
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
+ event->device.device = device;
+ break;
}
}
@@ -1270,6 +1279,11 @@ clutter_event_get_device (const ClutterEvent *event)
case CLUTTER_PAD_RING:
device = event->pad_ring.device;
break;
+
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
+ device = event->device.device;
+ break;
}
return device;
@@ -1428,6 +1442,11 @@ clutter_event_copy (const ClutterEvent *event)
new_event->im.text = g_strdup (event->im.text);
break;
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
+ new_event->device.device = event->device.device;
+ break;
+
default:
break;
}
@@ -1755,6 +1774,8 @@ clutter_event_get_axes (const ClutterEvent *event,
case CLUTTER_EVENT_LAST:
case CLUTTER_PROXIMITY_IN:
case CLUTTER_PROXIMITY_OUT:
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
break;
case CLUTTER_SCROLL:
diff --git a/clutter/clutter/clutter-event.h b/clutter/clutter/clutter-event.h
index e65463c65f..7afdb4a6d0 100644
--- a/clutter/clutter/clutter-event.h
+++ b/clutter/clutter/clutter-event.h
@@ -122,6 +122,7 @@ typedef struct _ClutterPadButtonEvent ClutterPadButtonEvent;
typedef struct _ClutterPadStripEvent ClutterPadStripEvent;
typedef struct _ClutterPadRingEvent ClutterPadRingEvent;
typedef struct _ClutterIMEvent ClutterIMEvent;
+typedef struct _ClutterDeviceEvent ClutterDeviceEvent;
/**
* ClutterAnyEvent:
@@ -558,6 +559,17 @@ struct _ClutterIMEvent
uint32_t len;
};
+struct _ClutterDeviceEvent
+{
+ ClutterEventType type;
+ guint32 time;
+ ClutterEventFlags flags;
+ ClutterStage *stage;
+ ClutterActor *source;
+
+ ClutterInputDevice *device;
+};
+
/**
* ClutterEvent:
*
@@ -585,6 +597,7 @@ union _ClutterEvent
ClutterPadStripEvent pad_strip;
ClutterPadRingEvent pad_ring;
ClutterIMEvent im;
+ ClutterDeviceEvent device;
};
/**
diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c
index 090cd893b5..445941c191 100644
--- a/clutter/clutter/clutter-main.c
+++ b/clutter/clutter/clutter-main.c
@@ -2119,6 +2119,10 @@ _clutter_process_event_details (ClutterActor *stage,
case CLUTTER_CLIENT_MESSAGE:
break;
+ case CLUTTER_DEVICE_ADDED:
+ case CLUTTER_DEVICE_REMOVED:
+ break;
+
case CLUTTER_EVENT_LAST:
break;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]