Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
156 changes: 32 additions & 124 deletions clutter/clutter/clutter-event.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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
Expand All @@ -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;
}

Expand All @@ -137,19 +123,13 @@ void
_clutter_event_set_platform_data (ClutterEvent *event,
gpointer data)
{
if (!is_event_allocated (event))
return;

((ClutterEventPrivate *) event)->platform_data = data;
}

void
_clutter_event_set_pointer_emulated (ClutterEvent *event,
gboolean is_emulated)
{
if (!is_event_allocated (event))
return;

((ClutterEventPrivate *) event)->is_pointer_emulated = !!is_emulated;
}

Expand Down Expand Up @@ -735,9 +715,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;
Expand Down Expand Up @@ -768,13 +745,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;
Expand Down Expand Up @@ -1109,15 +1081,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)
{
Expand Down Expand Up @@ -1214,16 +1183,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)
{
Expand Down Expand Up @@ -1314,14 +1279,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;
}

/**
Expand All @@ -1337,16 +1299,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);
ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;

if (is_event_allocated (event))
{
ClutterEventPrivate *real_event = (ClutterEventPrivate *) event;

return real_event->tool;
}
g_return_val_if_fail (event != NULL, NULL);

return NULL;
return real_event->tool;
}

/**
Expand All @@ -1368,11 +1325,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;
}

Expand All @@ -1390,6 +1342,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);
Expand All @@ -1399,21 +1352,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)
Expand Down Expand Up @@ -1475,10 +1423,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;
}
Expand All @@ -1494,15 +1441,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)
{
Expand Down Expand Up @@ -1535,7 +1479,6 @@ clutter_event_free (ClutterEvent *event)
break;
}

g_hash_table_remove (all_events, event);
g_slice_free (ClutterEventPrivate, (ClutterEventPrivate *) event);
}
}
Expand Down Expand Up @@ -1564,32 +1507,6 @@ clutter_event_get (void)
return g_queue_pop_tail (context->events_queue);
}

/**
* clutter_event_peek:
*
* Returns a pointer to the first event from the event queue but
* does not remove it.
*
* Return value: (transfer none): A #ClutterEvent or NULL if queue empty.
*
* Since: 0.4
*/
ClutterEvent *
clutter_event_peek (void)
{
ClutterMainContext *context = _clutter_context_get_default ();

g_return_val_if_fail (context != NULL, NULL);

if (context->events_queue == NULL)
return NULL;

if (g_queue_is_empty (context->events_queue))
return NULL;

return g_queue_peek_tail (context->events_queue);
}

void
_clutter_event_push (const ClutterEvent *event,
gboolean do_copy)
Expand Down Expand Up @@ -1730,9 +1647,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)
Expand Down Expand Up @@ -1761,9 +1675,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);
}
Expand Down Expand Up @@ -1968,9 +1879,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;
}

Expand Down
2 changes: 0 additions & 2 deletions clutter/clutter/clutter-event.h
Original file line number Diff line number Diff line change
Expand Up @@ -668,8 +668,6 @@ gboolean clutter_events_pending (void);
CLUTTER_EXPORT
ClutterEvent * clutter_event_get (void);
CLUTTER_EXPORT
ClutterEvent * clutter_event_peek (void);
CLUTTER_EXPORT
void clutter_event_put (const ClutterEvent *event);

CLUTTER_EXPORT
Expand Down
1 change: 0 additions & 1 deletion debian/libmuffin0.symbols
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,6 @@ libmuffin-clutter-0.so.0 libmuffin0 #MINVER#
clutter_event_has_shift_modifier@Base 5.3.0
clutter_event_is_pointer_emulated@Base 5.3.0
clutter_event_new@Base 5.3.0
clutter_event_peek@Base 5.3.0
clutter_event_put@Base 5.3.0
clutter_event_remove_filter@Base 5.3.0
clutter_event_sequence_get_type@Base 5.3.0
Expand Down
27 changes: 14 additions & 13 deletions src/backends/meta-cursor-tracker.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,30 +401,23 @@ get_pointer_position_gdk (int *x,
}

static void
get_pointer_position_clutter (int *x,
int *y,
int *mods)
get_pointer_position_clutter (graphene_point_t *point,
int *mods)
{
ClutterSeat *seat;
ClutterInputDevice *cdevice;
graphene_point_t point;

seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
cdevice = clutter_seat_get_pointer (seat);

clutter_input_device_get_coords (cdevice, NULL, &point);
if (x)
*x = point.x;
if (y)
*y = point.y;
clutter_input_device_get_coords (cdevice, NULL, point);
if (mods)
*mods = clutter_input_device_get_modifier_state (cdevice);
}

void
meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
int *x,
int *y,
graphene_point_t *coords,
ClutterModifierType *mods)
{
/* We can't use the clutter interface when not running as a wayland compositor,
Expand All @@ -433,9 +426,17 @@ meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
we forward to xwayland.
*/
if (meta_is_wayland_compositor ())
get_pointer_position_clutter (x, y, (int*)mods);
{
get_pointer_position_clutter (coords, (int*)mods);
}
else
get_pointer_position_gdk (x, y, (int*)mods);
{
int x, y;

get_pointer_position_gdk (&x, &y, (int*)mods);
coords->x = x;
coords->y = y;
}
}

gboolean
Expand Down
Loading
Loading