1 OBS-URL: https://build.opensuse.org/request/show/336330 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/mutter?expand=0&rev=184
80 lines
2.8 KiB
Diff
80 lines
2.8 KiB
Diff
From 505fcdc37c18ed2ed6b45173683a5d6e5e2e33fd Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
|
Date: Wed, 16 Sep 2015 15:49:46 +0800
|
|
Subject: [PATCH] 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 08172fb..82dd2c1 100644
|
|
--- a/src/wayland/meta-wayland-pointer.c
|
|
+++ b/src/wayland/meta-wayland-pointer.c
|
|
@@ -820,9 +820,13 @@ 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 1e7cb34..3cfc69f 100644
|
|
--- a/src/wayland/meta-xwayland.c
|
|
+++ b/src/wayland/meta-xwayland.c
|
|
@@ -172,6 +172,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 */
|
|
--
|
|
2.4.3
|