mirror of
https://github.com/brl/mutter.git
synced 2025-01-29 21:02:21 +00:00
wayland/pointer: Return on scroll without client
Return early from handle_scroll_event if no client is focused to avoid redundant calculations. Refactor, no functional changes. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1966>
This commit is contained in:
parent
d703ba56c3
commit
cea5c47671
@ -721,10 +721,15 @@ handle_scroll_event (MetaWaylandPointer *pointer,
|
|||||||
wl_fixed_t x_value = 0, y_value = 0;
|
wl_fixed_t x_value = 0, y_value = 0;
|
||||||
int x_discrete = 0, y_discrete = 0;
|
int x_discrete = 0, y_discrete = 0;
|
||||||
enum wl_pointer_axis_source source = -1;
|
enum wl_pointer_axis_source source = -1;
|
||||||
|
MetaWaylandPointerClient *client;
|
||||||
|
|
||||||
if (clutter_event_is_pointer_emulated (event))
|
if (clutter_event_is_pointer_emulated (event))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
client = pointer->focus_client;
|
||||||
|
if (!client)
|
||||||
|
return;
|
||||||
|
|
||||||
switch (event->scroll.scroll_source)
|
switch (event->scroll.scroll_source)
|
||||||
{
|
{
|
||||||
case CLUTTER_SCROLL_SOURCE_WHEEL:
|
case CLUTTER_SCROLL_SOURCE_WHEEL:
|
||||||
@ -780,51 +785,48 @@ handle_scroll_event (MetaWaylandPointer *pointer,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pointer->focus_client)
|
wl_resource_for_each (resource, &client->pointer_resources)
|
||||||
{
|
{
|
||||||
wl_resource_for_each (resource, &pointer->focus_client->pointer_resources)
|
int client_version = wl_resource_get_version (resource);
|
||||||
{
|
|
||||||
int client_version = wl_resource_get_version (resource);
|
|
||||||
|
|
||||||
if (client_version >= WL_POINTER_AXIS_SOURCE_SINCE_VERSION)
|
if (client_version >= WL_POINTER_AXIS_SOURCE_SINCE_VERSION)
|
||||||
wl_pointer_send_axis_source (resource, source);
|
wl_pointer_send_axis_source (resource, source);
|
||||||
|
|
||||||
/* X axis */
|
/* X axis */
|
||||||
if (x_discrete != 0 &&
|
if (x_discrete != 0 &&
|
||||||
client_version >= WL_POINTER_AXIS_DISCRETE_SINCE_VERSION)
|
client_version >= WL_POINTER_AXIS_DISCRETE_SINCE_VERSION)
|
||||||
wl_pointer_send_axis_discrete (resource,
|
wl_pointer_send_axis_discrete (resource,
|
||||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
||||||
x_discrete);
|
x_discrete);
|
||||||
|
|
||||||
if (x_value)
|
if (x_value)
|
||||||
wl_pointer_send_axis (resource, clutter_event_get_time (event),
|
wl_pointer_send_axis (resource, clutter_event_get_time (event),
|
||||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL, x_value);
|
WL_POINTER_AXIS_HORIZONTAL_SCROLL, x_value);
|
||||||
|
|
||||||
if ((event->scroll.finish_flags & CLUTTER_SCROLL_FINISHED_HORIZONTAL) &&
|
if ((event->scroll.finish_flags & CLUTTER_SCROLL_FINISHED_HORIZONTAL) &&
|
||||||
client_version >= WL_POINTER_AXIS_STOP_SINCE_VERSION)
|
client_version >= WL_POINTER_AXIS_STOP_SINCE_VERSION)
|
||||||
wl_pointer_send_axis_stop (resource,
|
wl_pointer_send_axis_stop (resource,
|
||||||
clutter_event_get_time (event),
|
clutter_event_get_time (event),
|
||||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL);
|
WL_POINTER_AXIS_HORIZONTAL_SCROLL);
|
||||||
/* Y axis */
|
/* Y axis */
|
||||||
if (y_discrete != 0 &&
|
if (y_discrete != 0 &&
|
||||||
client_version >= WL_POINTER_AXIS_DISCRETE_SINCE_VERSION)
|
client_version >= WL_POINTER_AXIS_DISCRETE_SINCE_VERSION)
|
||||||
wl_pointer_send_axis_discrete (resource,
|
wl_pointer_send_axis_discrete (resource,
|
||||||
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
||||||
y_discrete);
|
y_discrete);
|
||||||
|
|
||||||
if (y_value)
|
if (y_value)
|
||||||
wl_pointer_send_axis (resource, clutter_event_get_time (event),
|
wl_pointer_send_axis (resource, clutter_event_get_time (event),
|
||||||
WL_POINTER_AXIS_VERTICAL_SCROLL, y_value);
|
WL_POINTER_AXIS_VERTICAL_SCROLL, y_value);
|
||||||
|
|
||||||
if ((event->scroll.finish_flags & CLUTTER_SCROLL_FINISHED_VERTICAL) &&
|
if ((event->scroll.finish_flags & CLUTTER_SCROLL_FINISHED_VERTICAL) &&
|
||||||
client_version >= WL_POINTER_AXIS_STOP_SINCE_VERSION)
|
client_version >= WL_POINTER_AXIS_STOP_SINCE_VERSION)
|
||||||
wl_pointer_send_axis_stop (resource,
|
wl_pointer_send_axis_stop (resource,
|
||||||
clutter_event_get_time (event),
|
clutter_event_get_time (event),
|
||||||
WL_POINTER_AXIS_VERTICAL_SCROLL);
|
WL_POINTER_AXIS_VERTICAL_SCROLL);
|
||||||
}
|
|
||||||
|
|
||||||
meta_wayland_pointer_broadcast_frame (pointer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta_wayland_pointer_broadcast_frame (pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
Loading…
x
Reference in New Issue
Block a user