[mutter] wayland: Don't scale XWayland pointer cursor sprites
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland: Don't scale XWayland pointer cursor sprites
- Date: Sun, 4 Oct 2015 06:18:00 +0000 (UTC)
commit e84f69466830e5a3c2e6f0abc6c3f2b5f5572bb9
Author: Jonas Ådahl <jadahl gmail com>
Date: Wed Sep 16 15:49:46 2015 +0800
wayland: Don't scale XWayland pointer cursor sprites
We don't have any way of knowing what the intended size of a XWayland
cursor is supposed to be, so lets do what we do with regular XWayland
surfaces and don't scale them. The result is that cursor sprites of
HiDPI aware X11 clients will show correctly, but non-aware clients may
have tiny cursor sprites.
https://bugzilla.gnome.org/show_bug.cgi?id=755099
src/wayland/meta-wayland-pointer.c | 10 +++++++---
src/wayland/meta-xwayland.c | 9 +++++++++
src/wayland/meta-xwayland.h | 5 +++++
3 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
index 993b9e3..894a64d 100644
--- a/src/wayland/meta-wayland-pointer.c
+++ b/src/wayland/meta-wayland-pointer.c
@@ -53,6 +53,7 @@
#include "meta-wayland-private.h"
#include "meta-wayland-surface.h"
#include "meta-wayland-buffer.h"
+#include "meta-xwayland.h"
#include "meta-cursor.h"
#include "meta-cursor-tracker-private.h"
#include "meta-surface-actor-wayland.h"
@@ -819,9 +820,12 @@ cursor_sprite_prepare_at (MetaCursorSprite *cursor_sprite,
MetaScreen *screen = display->screen;
const MetaMonitorInfo *monitor;
- monitor = meta_screen_get_monitor_for_point (screen, x, y);
- meta_cursor_sprite_set_texture_scale (cursor_sprite,
- (float)monitor->scale / surface->scale);
+ if (!meta_xwayland_is_xwayland_surface (surface))
+ {
+ monitor = meta_screen_get_monitor_for_point (screen, x, y);
+ meta_cursor_sprite_set_texture_scale (cursor_sprite,
+ (float)monitor->scale / surface->scale);
+ }
meta_wayland_surface_update_outputs (surface);
}
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
index 179b94c..bf49f41 100644
--- a/src/wayland/meta-xwayland.c
+++ b/src/wayland/meta-xwayland.c
@@ -174,6 +174,15 @@ meta_xwayland_handle_wl_surface_id (MetaWindow *window,
}
}
+gboolean
+meta_xwayland_is_xwayland_surface (MetaWaylandSurface *surface)
+{
+ MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
+ MetaXWaylandManager *manager = &compositor->xwayland_manager;
+
+ return wl_resource_get_client (surface->resource) == manager->client;
+}
+
static gboolean
try_display (int display,
char **filename_out,
diff --git a/src/wayland/meta-xwayland.h b/src/wayland/meta-xwayland.h
index 5308f29..caaf510 100644
--- a/src/wayland/meta-xwayland.h
+++ b/src/wayland/meta-xwayland.h
@@ -28,8 +28,13 @@
#include <glib.h>
#include <meta/types.h>
+#include "wayland/meta-wayland-types.h"
+
void
meta_xwayland_handle_wl_surface_id (MetaWindow *window,
guint32 surface_id);
+gboolean
+meta_xwayland_is_xwayland_surface (MetaWaylandSurface *surface);
+
#endif /* META_XWAYLAND_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]