pointer: Remove our own position tracking

Use the coords inside ClutterInputDevice instead.
This commit is contained in:
Jasper St. Pierre 2014-04-18 10:27:48 -04:00
parent aee074b11d
commit 2748661f63
3 changed files with 29 additions and 39 deletions

View File

@ -148,9 +148,7 @@ make_wayland_cursor_tracker (MetaScreen *screen)
compositor = meta_wayland_compositor_get_default (); compositor = meta_wayland_compositor_get_default ();
compositor->seat->pointer.cursor_tracker = self; compositor->seat->pointer.cursor_tracker = self;
meta_cursor_tracker_update_position (self, meta_cursor_tracker_update_position (self, 0, 0);
wl_fixed_to_int (compositor->seat->pointer.x),
wl_fixed_to_int (compositor->seat->pointer.y));
#if defined(CLUTTER_WINDOWING_EGL) #if defined(CLUTTER_WINDOWING_EGL)
if (clutter_check_windowing_backend (CLUTTER_WINDOWING_EGL)) if (clutter_check_windowing_backend (CLUTTER_WINDOWING_EGL))

View File

@ -290,8 +290,6 @@ meta_wayland_pointer_init (MetaWaylandPointer *pointer,
struct wl_display *display) struct wl_display *display)
{ {
ClutterDeviceManager *manager; ClutterDeviceManager *manager;
ClutterInputDevice *device;
ClutterPoint current;
memset (pointer, 0, sizeof *pointer); memset (pointer, 0, sizeof *pointer);
@ -312,7 +310,7 @@ meta_wayland_pointer_init (MetaWaylandPointer *pointer,
pointer->grab = &pointer->default_grab; pointer->grab = &pointer->default_grab;
manager = clutter_device_manager_get_default (); manager = clutter_device_manager_get_default ();
device = clutter_device_manager_get_core_device (manager, CLUTTER_POINTER_DEVICE); pointer->device = clutter_device_manager_get_core_device (manager, CLUTTER_POINTER_DEVICE);
#if defined(CLUTTER_WINDOWING_EGL) #if defined(CLUTTER_WINDOWING_EGL)
/* XXX -- the evdev backend can be used regardless of the /* XXX -- the evdev backend can be used regardless of the
@ -324,10 +322,6 @@ meta_wayland_pointer_init (MetaWaylandPointer *pointer,
pointer, NULL); pointer, NULL);
} }
#endif #endif
clutter_input_device_get_coords (device, NULL, &current);
pointer->x = wl_fixed_from_double (current.x);
pointer->y = wl_fixed_from_double (current.y);
} }
void void
@ -391,15 +385,16 @@ repick_for_event (MetaWaylandPointer *pointer,
} }
else else
{ {
ClutterDeviceManager *device_manager = clutter_device_manager_get_default (); ClutterStage *stage = clutter_input_device_get_pointer_stage (pointer->device);
ClutterInputDevice *device = clutter_device_manager_get_device (device_manager, META_VIRTUAL_CORE_POINTER_ID);
ClutterStage *stage = clutter_input_device_get_pointer_stage (device);
if (stage) if (stage)
actor = clutter_stage_get_actor_at_pos (stage, {
CLUTTER_PICK_REACTIVE, ClutterPoint pos;
wl_fixed_to_double (pointer->x),
wl_fixed_to_double (pointer->y)); clutter_input_device_get_coords (pointer->device, NULL, &pos);
actor = clutter_stage_get_actor_at_pos (stage, CLUTTER_PICK_REACTIVE,
pos.x, pos.y);
}
} }
if (META_IS_SURFACE_ACTOR_WAYLAND (actor)) if (META_IS_SURFACE_ACTOR_WAYLAND (actor))
@ -437,8 +432,7 @@ handle_button_event (MetaWaylandPointer *pointer,
{ {
pointer->grab_button = clutter_event_get_button (event); pointer->grab_button = clutter_event_get_button (event);
pointer->grab_time = clutter_event_get_time (event); pointer->grab_time = clutter_event_get_time (event);
pointer->grab_x = pointer->x; clutter_event_get_coords (event, &pointer->grab_x, &pointer->grab_y);
pointer->grab_y = pointer->y;
} }
pointer->grab->interface->button (pointer->grab, event); pointer->grab->interface->button (pointer->grab, event);
@ -533,19 +527,14 @@ void
meta_wayland_pointer_update (MetaWaylandPointer *pointer, meta_wayland_pointer_update (MetaWaylandPointer *pointer,
const ClutterEvent *event) const ClutterEvent *event)
{ {
float x, y;
clutter_event_get_coords (event, &x, &y);
pointer->x = wl_fixed_from_double (x);
pointer->y = wl_fixed_from_double (y);
pointer->button_count = count_buttons (event); pointer->button_count = count_buttons (event);
if (pointer->cursor_tracker) if (pointer->cursor_tracker)
{ {
meta_cursor_tracker_update_position (pointer->cursor_tracker, ClutterPoint pos;
wl_fixed_to_int (pointer->x),
wl_fixed_to_int (pointer->y)); clutter_input_device_get_coords (pointer->device, NULL, &pos);
meta_cursor_tracker_update_position (pointer->cursor_tracker, pos.x, pos.y);
if (pointer->current == NULL) if (pointer->current == NULL)
meta_cursor_tracker_unset_window_cursor (pointer->cursor_tracker); meta_cursor_tracker_unset_window_cursor (pointer->cursor_tracker);
@ -610,15 +599,17 @@ meta_wayland_pointer_set_focus (MetaWaylandPointer *pointer,
{ {
struct wl_resource *resource; struct wl_resource *resource;
struct wl_list *l; struct wl_list *l;
ClutterPoint pos;
pointer->focus_surface = surface; pointer->focus_surface = surface;
wl_resource_add_destroy_listener (pointer->focus_surface->resource, &pointer->focus_surface_listener); wl_resource_add_destroy_listener (pointer->focus_surface->resource, &pointer->focus_surface_listener);
clutter_input_device_get_coords (pointer->device, NULL, &pos);
meta_window_handle_enter (pointer->focus_surface->window, meta_window_handle_enter (pointer->focus_surface->window,
/* XXX -- can we reliably get a timestamp for setting focus? */ /* XXX -- can we reliably get a timestamp for setting focus? */
clutter_get_current_event_time (), clutter_get_current_event_time (),
wl_fixed_to_int (pointer->x), pos.x, pos.y);
wl_fixed_to_int (pointer->y));
move_resources_for_client (&pointer->focus_resource_list, move_resources_for_client (&pointer->focus_resource_list,
&pointer->resource_list, &pointer->resource_list,
@ -805,9 +796,8 @@ meta_wayland_pointer_start_popup_grab (MetaWaylandPointer *pointer,
1, /* button. XXX? */ 1, /* button. XXX? */
0, /* modmask */ 0, /* modmask */
meta_display_get_current_time_roundtrip (window->display), meta_display_get_current_time_roundtrip (window->display),
wl_fixed_to_int (pointer->grab_x), pointer->grab_x,
wl_fixed_to_int (pointer->grab_y)); pointer->grab_y);
} }
else else
grab = (MetaWaylandPopupGrab*)pointer->grab; grab = (MetaWaylandPopupGrab*)pointer->grab;
@ -845,10 +835,12 @@ meta_wayland_pointer_get_relative_coordinates (MetaWaylandPointer *pointer,
CLUTTER_ACTOR (meta_window_get_compositor_private (surface->window)); CLUTTER_ACTOR (meta_window_get_compositor_private (surface->window));
if (actor) if (actor)
clutter_actor_transform_stage_point (actor, {
wl_fixed_to_double (pointer->x), ClutterPoint pos;
wl_fixed_to_double (pointer->y), clutter_input_device_get_coords (pointer->device, NULL, &pos);
&xf, &yf);
clutter_actor_transform_stage_point (actor, pos.x, pos.y, &xf, &yf);
}
} }
*sx = wl_fixed_from_double (xf); *sx = wl_fixed_from_double (xf);

View File

@ -63,12 +63,12 @@ struct _MetaWaylandPointer
MetaWaylandPointerGrab *grab; MetaWaylandPointerGrab *grab;
MetaWaylandPointerGrab default_grab; MetaWaylandPointerGrab default_grab;
wl_fixed_t grab_x, grab_y;
guint32 grab_button; guint32 grab_button;
guint32 grab_serial; guint32 grab_serial;
guint32 grab_time; guint32 grab_time;
float grab_x, grab_y;
wl_fixed_t x, y; /* TODO: remove, use ClutterInputDevice instead */ ClutterInputDevice *device;
MetaWaylandSurface *current; MetaWaylandSurface *current;
guint32 button_count; guint32 button_count;