[mutter] wayland: Add global to surface coordinate helper
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland: Add global to surface coordinate helper
- Date: Tue, 16 Feb 2016 11:03:31 +0000 (UTC)
commit bc8ec2d90d5f39f34ccf1548d6cb0e7dbd8214a7
Author: Jonas Ådahl <jadahl gmail com>
Date: Wed Jun 17 10:16:02 2015 +0800
wayland: Add global to surface coordinate helper
https://bugzilla.gnome.org/show_bug.cgi?id=744104
src/wayland/meta-wayland-pointer.c | 7 +++----
src/wayland/meta-wayland-surface.c | 15 +++++++++++++++
src/wayland/meta-wayland-surface.h | 6 ++++++
3 files changed, 24 insertions(+), 4 deletions(-)
---
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index ef3228e..663e35f 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -924,11 +924,10 @@ meta_wayland_pointer_get_relative_coordinates (MetaWaylandPointer *pointer,
ClutterPoint pos;
clutter_input_device_get_coords (pointer->device, NULL, &pos);
- clutter_actor_transform_stage_point (CLUTTER_ACTOR (meta_surface_actor_get_texture
(surface->surface_actor)),
- pos.x, pos.y, &xf, &yf);
+ meta_wayland_surface_get_relative_coordinates (surface, pos.x, pos.y, &xf, &yf);
- *sx = wl_fixed_from_double (xf) / surface->scale;
- *sy = wl_fixed_from_double (yf) / surface->scale;
+ *sx = wl_fixed_from_double (xf);
+ *sy = wl_fixed_from_double (yf);
}
static void
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c
index cab05df..29465e7 100644
--- a/src/wayland/meta-wayland-surface.c
+++ b/src/wayland/meta-wayland-surface.c
@@ -2417,6 +2417,21 @@ meta_wayland_surface_get_toplevel_window (MetaWaylandSurface *surface)
return NULL;
}
+void
+meta_wayland_surface_get_relative_coordinates (MetaWaylandSurface *surface,
+ float abs_x,
+ float abs_y,
+ float *sx,
+ float *sy)
+{
+ ClutterActor *actor =
+ CLUTTER_ACTOR (meta_surface_actor_get_texture (surface->surface_actor));
+
+ clutter_actor_transform_stage_point (actor, abs_x, abs_y, sx, sy);
+ *sx /= surface->scale;
+ *sy /= surface->scale;
+}
+
static void
meta_wayland_surface_init (MetaWaylandSurface *surface)
{
diff --git a/src/wayland/meta-wayland-surface.h b/src/wayland/meta-wayland-surface.h
index 7a5ec6d..6f3c1e8 100644
--- a/src/wayland/meta-wayland-surface.h
+++ b/src/wayland/meta-wayland-surface.h
@@ -253,6 +253,12 @@ void meta_wayland_surface_queue_pending_frame_callbacks (MetaWayl
void meta_wayland_surface_queue_pending_state_frame_callbacks (MetaWaylandSurface
*surface,
MetaWaylandPendingState
*pending);
+void meta_wayland_surface_get_relative_coordinates (MetaWaylandSurface *surface,
+ float abs_x,
+ float abs_y,
+ float *sx,
+ float *sy);
+
MetaWaylandSurface * meta_wayland_surface_role_get_surface (MetaWaylandSurfaceRole *role);
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]