summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-09-24 17:25:21 +0200
committerCarlos Garnacho <carlosg@gnome.org>2020-10-06 21:33:19 +0200
commit0cab71ea52f3468ca44afc2d7e274a03dd8436b0 (patch)
tree190df9747400be488b60a49f65461d349fe7d859
parenta3c95f60235ff05a6e05dd9d8b8b7ec9992b7b23 (diff)
downloadmutter-wip/carlosg/small-api-cleanups.tar.gz
clutter: Do not special case allocated eventswip/carlosg/small-api-cleanups
All events should be allocated, stack allocation is avoided and should be avoided in the future, probably by making ClutterEvent structs opaque. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1475
-rw-r--r--clutter/clutter/clutter-event.c130
1 files changed, 32 insertions, 98 deletions
diff --git a/clutter/clutter/clutter-event.c b/clutter/clutter/clutter-event.c
index 1ee5f5c1f..f6e458ab0 100644
--- a/clutter/clutter/clutter-event.c
+++ b/clutter/clutter/clutter-event.c
@@ -73,8 +73,6 @@ typedef struct _ClutterEventFilter {
gpointer user_data;
} ClutterEventFilter;
-static GHashTable *all_events = NULL;
-
G_DEFINE_BOXED_TYPE (ClutterEvent, clutter_event,
clutter_event_copy,
clutter_event_free);
@@ -96,15 +94,6 @@ G_DEFINE_BOXED_TYPE (ClutterEventSequence, clutter_event_sequence,
clutter_event_sequence_copy,
clutter_event_sequence_free);
-static gboolean
-is_event_allocated (const ClutterEvent *event)
-{
- if (all_events == NULL)
- return FALSE;
-
- return g_hash_table_lookup (all_events, event) != NULL;
-}
-
/*
* _clutter_event_get_platform_data:
* @event: a #ClutterEvent
@@ -118,9 +107,6 @@ is_event_allocated (const ClutterEvent *event)
gpointer
_clutter_event_get_platform_data (const ClutterEvent *event)
{
- if (!is_event_allocated (event))
- return NULL;
-
return ((ClutterEventPrivate *) event)->platform_data;
}
@@ -137,9 +123,6 @@ void
_clutter_event_set_platform_data (ClutterEvent *event,
gpointer data)
{
- if (!is_event_allocated (event))
- return;
-
((ClutterEventPrivate *) event)->platform_data = data;
}
@@ -147,9 +130,6 @@ void
_clutter_event_set_pointer_emulated (ClutterEvent *event,
gboolean is_emulated)
{
- if (!is_event_allocated (event))
- return;
-
((ClutterEventPrivate *) event)->is_pointer_emulated = !!is_emulated;
}
@@ -723,9 +703,6 @@ clutter_event_set_scroll_delta (ClutterEvent *event,
g_return_if_fail (event != NULL);
g_return_if_fail (event->type == CLUTTER_SCROLL);
- if (!is_event_allocated (event))
- return;
-
event->scroll.direction = CLUTTER_SCROLL_SMOOTH;
((ClutterEventPrivate *) event)->delta_x = dx;
@@ -756,13 +733,8 @@ clutter_event_get_scroll_delta (const ClutterEvent *event,
g_return_if_fail (event->type == CLUTTER_SCROLL);
g_return_if_fail (event->scroll.direction == CLUTTER_SCROLL_SMOOTH);
- delta_x = delta_y = 0;
-
- if (is_event_allocated (event))
- {
- delta_x = ((ClutterEventPrivate *) event)->delta_x;
- delta_y = ((ClutterEventPrivate *) event)->delta_y;
- }
+ delta_x = ((ClutterEventPrivate *) event)->delta_x;
+ delta_y = ((ClutterEventPrivate *) event)->delta_y;
if (dx != NULL)
*dx = delta_x;
@@ -1097,15 +1069,12 @@ void
clutter_event_set_device (ClutterEvent *event,
ClutterInputDevice *device)
{
+ ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
+
g_return_if_fail (event != NULL);
g_return_if_fail (device == NULL || CLUTTER_IS_INPUT_DEVICE (device));
- if (is_event_allocated (event))
- {
- ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
-
- g_set_object (&real_event->device, device);
- }
+ g_set_object (&real_event->device, device);
switch (event->type)
{
@@ -1200,16 +1169,12 @@ ClutterInputDevice *
clutter_event_get_device (const ClutterEvent *event)
{
ClutterInputDevice *device = NULL;
+ ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
g_return_val_if_fail (event != NULL, NULL);
- if (is_event_allocated (event))
- {
- ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
-
- if (real_event->device != NULL)
- return real_event->device;
- }
+ if (real_event->device != NULL)
+ return real_event->device;
switch (event->type)
{
@@ -1298,14 +1263,11 @@ void
clutter_event_set_device_tool (ClutterEvent *event,
ClutterInputDeviceTool *tool)
{
- g_return_if_fail (event != NULL);
+ ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
- if (is_event_allocated (event))
- {
- ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
+ g_return_if_fail (event != NULL);
- real_event->tool = tool;
- }
+ real_event->tool = tool;
}
/**
@@ -1321,16 +1283,11 @@ clutter_event_set_device_tool (ClutterEvent *event,
ClutterInputDeviceTool *
clutter_event_get_device_tool (const ClutterEvent *event)
{
- g_return_val_if_fail (event != NULL, NULL);
-
- if (is_event_allocated (event))
- {
- ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
+ ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
- return real_event->tool;
- }
+ g_return_val_if_fail (event != NULL, NULL);
- return NULL;
+ return real_event->tool;
}
/**
@@ -1352,11 +1309,6 @@ clutter_event_new (ClutterEventType type)
new_event = (ClutterEvent *) priv;
new_event->type = new_event->any.type = type;
- if (G_UNLIKELY (all_events == NULL))
- all_events = g_hash_table_new (NULL, NULL);
-
- g_hash_table_replace (all_events, priv, GUINT_TO_POINTER (1));
-
return new_event;
}
@@ -1374,6 +1326,7 @@ clutter_event_copy (const ClutterEvent *event)
ClutterEvent *new_event;
ClutterEventPrivate *new_real_event;
ClutterInputDevice *device;
+ ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
gint n_axes = 0;
g_return_val_if_fail (event != NULL, NULL);
@@ -1383,21 +1336,16 @@ clutter_event_copy (const ClutterEvent *event)
*new_event = *event;
- if (is_event_allocated (event))
- {
- ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
-
- g_set_object (&new_real_event->device, real_event->device);
- g_set_object (&new_real_event->source_device, real_event->source_device);
- new_real_event->delta_x = real_event->delta_x;
- new_real_event->delta_y = real_event->delta_y;
- new_real_event->is_pointer_emulated = real_event->is_pointer_emulated;
- new_real_event->base_state = real_event->base_state;
- new_real_event->button_state = real_event->button_state;
- new_real_event->latched_state = real_event->latched_state;
- new_real_event->locked_state = real_event->locked_state;
- new_real_event->tool = real_event->tool;
- }
+ g_set_object (&new_real_event->device, real_event->device);
+ g_set_object (&new_real_event->source_device, real_event->source_device);
+ new_real_event->delta_x = real_event->delta_x;
+ new_real_event->delta_y = real_event->delta_y;
+ new_real_event->is_pointer_emulated = real_event->is_pointer_emulated;
+ new_real_event->base_state = real_event->base_state;
+ new_real_event->button_state = real_event->button_state;
+ new_real_event->latched_state = real_event->latched_state;
+ new_real_event->locked_state = real_event->locked_state;
+ new_real_event->tool = real_event->tool;
device = clutter_event_get_device (event);
if (device != NULL)
@@ -1446,10 +1394,9 @@ clutter_event_copy (const ClutterEvent *event)
break;
}
- if (is_event_allocated (event))
- _clutter_backend_copy_event_data (clutter_get_default_backend (),
- event,
- new_event);
+ _clutter_backend_copy_event_data (clutter_get_default_backend (),
+ event,
+ new_event);
return new_event;
}
@@ -1465,15 +1412,12 @@ clutter_event_free (ClutterEvent *event)
{
if (G_LIKELY (event != NULL))
{
- _clutter_backend_free_event_data (clutter_get_default_backend (), event);
+ ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
- if (is_event_allocated (event))
- {
- ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;
+ _clutter_backend_free_event_data (clutter_get_default_backend (), event);
- g_clear_object (&real_event->device);
- g_clear_object (&real_event->source_device);
- }
+ g_clear_object (&real_event->device);
+ g_clear_object (&real_event->source_device);
switch (event->type)
{
@@ -1506,7 +1450,6 @@ clutter_event_free (ClutterEvent *event)
break;
}
- g_hash_table_remove (all_events, event);
g_slice_free (ClutterEventPrivate, (ClutterEventPrivate *) event);
}
}
@@ -1673,9 +1616,6 @@ clutter_event_get_source_device (const ClutterEvent *event)
{
ClutterEventPrivate *real_event;
- if (!is_event_allocated (event))
- return NULL;
-
real_event = (ClutterEventPrivate *) event;
if (real_event->source_device != NULL)
@@ -1704,9 +1644,6 @@ clutter_event_set_source_device (ClutterEvent *event,
g_return_if_fail (event != NULL);
g_return_if_fail (device == NULL || CLUTTER_IS_INPUT_DEVICE (device));
- if (!is_event_allocated (event))
- return;
-
real_event = (ClutterEventPrivate *) event;
g_set_object (&real_event->source_device, device);
}
@@ -1909,9 +1846,6 @@ clutter_event_is_pointer_emulated (const ClutterEvent *event)
{
g_return_val_if_fail (event != NULL, FALSE);
- if (!is_event_allocated (event))
- return FALSE;
-
return ((ClutterEventPrivate *) event)->is_pointer_emulated;
}