mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
backends/native: Use viewport info to find out stage extents
This information is equivalent to the stage extents, this just leaves meta_seat_native_get_stage() used for setting event->any.stage, which is a tiny lame excuse. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403
This commit is contained in:
parent
4f794d3acb
commit
4b0d3f44e1
@ -1437,17 +1437,16 @@ meta_input_device_native_get_libinput_device (ClutterInputDevice *device)
|
|||||||
|
|
||||||
void
|
void
|
||||||
meta_input_device_native_translate_coordinates (ClutterInputDevice *device,
|
meta_input_device_native_translate_coordinates (ClutterInputDevice *device,
|
||||||
ClutterStage *stage,
|
MetaViewportInfo *viewports,
|
||||||
float *x,
|
float *x,
|
||||||
float *y)
|
float *y)
|
||||||
{
|
{
|
||||||
MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (device);
|
MetaInputDeviceNative *device_evdev = META_INPUT_DEVICE_NATIVE (device);
|
||||||
double min_x = 0, min_y = 0, max_x = 1, max_y = 1;
|
double min_x = 0, min_y = 0, max_x = 1, max_y = 1;
|
||||||
double stage_width, stage_height;
|
float stage_width, stage_height;
|
||||||
double x_d, y_d;
|
double x_d, y_d;
|
||||||
|
|
||||||
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
|
meta_viewport_info_get_extents (viewports, &stage_width, &stage_height);
|
||||||
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
|
|
||||||
x_d = *x / stage_width;
|
x_d = *x / stage_width;
|
||||||
y_d = *y / stage_height;
|
y_d = *y / stage_height;
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ ClutterInputDeviceType meta_input_device_native_determine_type (struct libin
|
|||||||
|
|
||||||
|
|
||||||
void meta_input_device_native_translate_coordinates (ClutterInputDevice *device,
|
void meta_input_device_native_translate_coordinates (ClutterInputDevice *device,
|
||||||
ClutterStage *stage,
|
MetaViewportInfo *viewports,
|
||||||
float *x,
|
float *x,
|
||||||
float *y);
|
float *y);
|
||||||
|
|
||||||
|
@ -388,7 +388,6 @@ new_absolute_motion_event (MetaSeatNative *seat,
|
|||||||
float y,
|
float y,
|
||||||
double *axes)
|
double *axes)
|
||||||
{
|
{
|
||||||
ClutterStage *stage = meta_seat_native_get_stage (seat);
|
|
||||||
ClutterEvent *event;
|
ClutterEvent *event;
|
||||||
|
|
||||||
event = clutter_event_new (CLUTTER_MOTION);
|
event = clutter_event_new (CLUTTER_MOTION);
|
||||||
@ -408,9 +407,16 @@ new_absolute_motion_event (MetaSeatNative *seat,
|
|||||||
meta_xkb_translate_state (event, seat->xkb, seat->button_state);
|
meta_xkb_translate_state (event, seat->xkb, seat->button_state);
|
||||||
event->motion.x = x;
|
event->motion.x = x;
|
||||||
event->motion.y = y;
|
event->motion.y = y;
|
||||||
meta_input_device_native_translate_coordinates (input_device, stage,
|
|
||||||
|
/* This may happen early at startup */
|
||||||
|
if (seat->viewports)
|
||||||
|
{
|
||||||
|
meta_input_device_native_translate_coordinates (input_device,
|
||||||
|
seat->viewports,
|
||||||
&event->motion.x,
|
&event->motion.x,
|
||||||
&event->motion.y);
|
&event->motion.y);
|
||||||
|
}
|
||||||
|
|
||||||
event->motion.axes = axes;
|
event->motion.axes = axes;
|
||||||
clutter_event_set_device (event, seat->core_pointer);
|
clutter_event_set_device (event, seat->core_pointer);
|
||||||
clutter_event_set_source_device (event, input_device);
|
clutter_event_set_source_device (event, input_device);
|
||||||
@ -796,7 +802,6 @@ meta_seat_native_notify_touch_event (MetaSeatNative *seat,
|
|||||||
double x,
|
double x,
|
||||||
double y)
|
double y)
|
||||||
{
|
{
|
||||||
ClutterStage *stage = meta_seat_native_get_stage (seat);
|
|
||||||
ClutterEvent *event = NULL;
|
ClutterEvent *event = NULL;
|
||||||
|
|
||||||
event = clutter_event_new (evtype);
|
event = clutter_event_new (evtype);
|
||||||
@ -805,7 +810,8 @@ meta_seat_native_notify_touch_event (MetaSeatNative *seat,
|
|||||||
event->touch.time = us2ms (time_us);
|
event->touch.time = us2ms (time_us);
|
||||||
event->touch.x = x;
|
event->touch.x = x;
|
||||||
event->touch.y = y;
|
event->touch.y = y;
|
||||||
meta_input_device_native_translate_coordinates (input_device, stage,
|
meta_input_device_native_translate_coordinates (input_device,
|
||||||
|
seat->viewports,
|
||||||
&event->touch.x,
|
&event->touch.x,
|
||||||
&event->touch.y);
|
&event->touch.y);
|
||||||
|
|
||||||
@ -1784,7 +1790,6 @@ process_tablet_axis (MetaSeatNative *seat,
|
|||||||
struct libinput_event *event)
|
struct libinput_event *event)
|
||||||
{
|
{
|
||||||
struct libinput_device *libinput_device = libinput_event_get_device (event);
|
struct libinput_device *libinput_device = libinput_event_get_device (event);
|
||||||
ClutterStage *stage = meta_seat_native_get_stage (seat);
|
|
||||||
uint64_t time;
|
uint64_t time;
|
||||||
double x, y, dx, dy, *axes;
|
double x, y, dx, dy, *axes;
|
||||||
float stage_width, stage_height;
|
float stage_width, stage_height;
|
||||||
@ -1801,8 +1806,7 @@ process_tablet_axis (MetaSeatNative *seat,
|
|||||||
if (!axes)
|
if (!axes)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
|
meta_viewport_info_get_extents (seat->viewports, &stage_width, &stage_height);
|
||||||
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
|
|
||||||
|
|
||||||
time = libinput_event_tablet_tool_get_time_usec (tablet_event);
|
time = libinput_event_tablet_tool_get_time_usec (tablet_event);
|
||||||
|
|
||||||
@ -1925,13 +1929,12 @@ process_device_event (MetaSeatNative *seat,
|
|||||||
uint64_t time_us;
|
uint64_t time_us;
|
||||||
double x, y;
|
double x, y;
|
||||||
float stage_width, stage_height;
|
float stage_width, stage_height;
|
||||||
ClutterStage *stage = meta_seat_native_get_stage (seat);
|
|
||||||
struct libinput_event_pointer *motion_event =
|
struct libinput_event_pointer *motion_event =
|
||||||
libinput_event_get_pointer_event (event);
|
libinput_event_get_pointer_event (event);
|
||||||
device = libinput_device_get_user_data (libinput_device);
|
device = libinput_device_get_user_data (libinput_device);
|
||||||
|
|
||||||
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
|
meta_viewport_info_get_extents (seat->viewports,
|
||||||
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
|
&stage_width, &stage_height);
|
||||||
|
|
||||||
time_us = libinput_event_pointer_get_time_usec (motion_event);
|
time_us = libinput_event_pointer_get_time_usec (motion_event);
|
||||||
x = libinput_event_pointer_get_absolute_x_transformed (motion_event,
|
x = libinput_event_pointer_get_absolute_x_transformed (motion_event,
|
||||||
@ -2026,7 +2029,6 @@ process_device_event (MetaSeatNative *seat,
|
|||||||
double x, y;
|
double x, y;
|
||||||
float stage_width, stage_height;
|
float stage_width, stage_height;
|
||||||
MetaSeatNative *seat;
|
MetaSeatNative *seat;
|
||||||
ClutterStage *stage;
|
|
||||||
MetaTouchState *touch_state;
|
MetaTouchState *touch_state;
|
||||||
struct libinput_event_touch *touch_event =
|
struct libinput_event_touch *touch_event =
|
||||||
libinput_event_get_touch_event (event);
|
libinput_event_get_touch_event (event);
|
||||||
@ -2034,10 +2036,9 @@ process_device_event (MetaSeatNative *seat,
|
|||||||
device = libinput_device_get_user_data (libinput_device);
|
device = libinput_device_get_user_data (libinput_device);
|
||||||
device_evdev = META_INPUT_DEVICE_NATIVE (device);
|
device_evdev = META_INPUT_DEVICE_NATIVE (device);
|
||||||
seat = meta_input_device_native_get_seat (device_evdev);
|
seat = meta_input_device_native_get_seat (device_evdev);
|
||||||
stage = meta_seat_native_get_stage (seat);
|
|
||||||
|
|
||||||
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
|
meta_viewport_info_get_extents (seat->viewports,
|
||||||
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
|
&stage_width, &stage_height);
|
||||||
|
|
||||||
seat_slot = libinput_event_touch_get_seat_slot (touch_event);
|
seat_slot = libinput_event_touch_get_seat_slot (touch_event);
|
||||||
time_us = libinput_event_touch_get_time_usec (touch_event);
|
time_us = libinput_event_touch_get_time_usec (touch_event);
|
||||||
@ -2094,7 +2095,6 @@ process_device_event (MetaSeatNative *seat,
|
|||||||
double x, y;
|
double x, y;
|
||||||
float stage_width, stage_height;
|
float stage_width, stage_height;
|
||||||
MetaSeatNative *seat;
|
MetaSeatNative *seat;
|
||||||
ClutterStage *stage;
|
|
||||||
MetaTouchState *touch_state;
|
MetaTouchState *touch_state;
|
||||||
struct libinput_event_touch *touch_event =
|
struct libinput_event_touch *touch_event =
|
||||||
libinput_event_get_touch_event (event);
|
libinput_event_get_touch_event (event);
|
||||||
@ -2102,10 +2102,9 @@ process_device_event (MetaSeatNative *seat,
|
|||||||
device = libinput_device_get_user_data (libinput_device);
|
device = libinput_device_get_user_data (libinput_device);
|
||||||
device_evdev = META_INPUT_DEVICE_NATIVE (device);
|
device_evdev = META_INPUT_DEVICE_NATIVE (device);
|
||||||
seat = meta_input_device_native_get_seat (device_evdev);
|
seat = meta_input_device_native_get_seat (device_evdev);
|
||||||
stage = meta_seat_native_get_stage (seat);
|
|
||||||
|
|
||||||
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
|
meta_viewport_info_get_extents (seat->viewports,
|
||||||
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
|
&stage_width, &stage_height);
|
||||||
|
|
||||||
seat_slot = libinput_event_touch_get_seat_slot (touch_event);
|
seat_slot = libinput_event_touch_get_seat_slot (touch_event);
|
||||||
time_us = libinput_event_touch_get_time_usec (touch_event);
|
time_us = libinput_event_touch_get_time_usec (touch_event);
|
||||||
|
Loading…
Reference in New Issue
Block a user