r47513 - in /desktop/unstable/mutter/debian: changelog patches/02_Handle-meta_screen_get_monitor_for_point-returning-N.patch patches/series

biebl at users.alioth.debian.org biebl at users.alioth.debian.org
Tue Mar 15 06:53:20 UTC 2016


Author: biebl
Date: Tue Mar 15 06:53:20 2016
New Revision: 47513

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=47513
Log:
Fix disappearing mouse cursor under GNOME Shell with a multi-monitor
setup. Patch cherry-picked from upstream Git.

Added:
    desktop/unstable/mutter/debian/patches/02_Handle-meta_screen_get_monitor_for_point-returning-N.patch
Modified:
    desktop/unstable/mutter/debian/changelog
    desktop/unstable/mutter/debian/patches/series

Modified: desktop/unstable/mutter/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/changelog?rev=47513&op=diff
==============================================================================
--- desktop/unstable/mutter/debian/changelog	[utf-8] (original)
+++ desktop/unstable/mutter/debian/changelog	[utf-8] Tue Mar 15 06:53:20 2016
@@ -6,6 +6,8 @@
   * Fix dh_makeshlibs args for libmutter0g.
   * Bump Standards-Version to 3.9.7.
   * Drop obsolete migration code from pre-wheezy.
+  * Fix disappearing mouse cursor under GNOME Shell with a multi-monitor
+    setup. Patch cherry-picked from upstream Git.
 
  -- Michael Biebl <biebl at debian.org>  Tue, 15 Mar 2016 07:40:18 +0100
 

Added: desktop/unstable/mutter/debian/patches/02_Handle-meta_screen_get_monitor_for_point-returning-N.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/patches/02_Handle-meta_screen_get_monitor_for_point-returning-N.patch?rev=47513&op=file
==============================================================================
--- desktop/unstable/mutter/debian/patches/02_Handle-meta_screen_get_monitor_for_point-returning-N.patch	(added)
+++ desktop/unstable/mutter/debian/patches/02_Handle-meta_screen_get_monitor_for_point-returning-N.patch	[utf-8] Tue Mar 15 06:53:20 2016
@@ -0,0 +1,96 @@
+From 70f20c90bd627be842b40396cf0c898b357f2dd0 Mon Sep 17 00:00:00 2001
+From: Rui Matos <tiagomatos at gmail.com>
+Date: Mon, 7 Mar 2016 17:24:13 +0100
+Subject: [PATCH] Handle meta_screen_get_monitor_for_point() returning NULL
+
+On the X11 backend we don't track the pointer position in
+priv->current_x/y which remain set to zero. That means we never set
+the clutter stage cursor if point 0,0 isn't covered by any monitor
+since we return early.
+
+Commit 4bebc5e5fa8aade8a96c769bf2365abe0948f6ce introduced this to
+avoid crashing on the prepare-at handlers when the cursor position
+doesn't fall inside any monitor area but we can handle that higher up
+in the stack. In that case, the sprite's scale doesn't matter since
+the cursor won't be shown anyway so we can skip setting it.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=763159
+---
+ src/backends/meta-cursor-renderer.c | 15 ---------------
+ src/core/screen.c                   |  3 ++-
+ src/wayland/meta-wayland-pointer.c  |  5 +++--
+ 3 files changed, 5 insertions(+), 18 deletions(-)
+
+diff --git a/src/backends/meta-cursor-renderer.c b/src/backends/meta-cursor-renderer.c
+index a76241b..48cd239 100644
+--- a/src/backends/meta-cursor-renderer.c
++++ b/src/backends/meta-cursor-renderer.c
+@@ -27,8 +27,6 @@
+ #include "meta-cursor-renderer.h"
+ 
+ #include <meta/meta-backend.h>
+-#include <backends/meta-backend-private.h>
+-#include <backends/meta-monitor-manager-private.h>
+ #include <meta/util.h>
+ 
+ #include <cogl/cogl.h>
+@@ -118,14 +116,6 @@ meta_cursor_renderer_calculate_rect (MetaCursorRenderer *renderer,
+   };
+ }
+ 
+-static gboolean
+-is_cursor_in_monitors_area (int x, int y)
+-{
+-  MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (meta_get_backend ());
+-  return meta_monitor_manager_get_monitor_at_point (monitor_manager,
+-                                                    (gfloat) x, (gfloat) y) >= 0;
+-}
+-
+ static void
+ update_cursor (MetaCursorRenderer *renderer,
+                MetaCursorSprite   *cursor_sprite)
+@@ -134,11 +124,6 @@ update_cursor (MetaCursorRenderer *renderer,
+   gboolean handled_by_backend;
+   gboolean should_redraw = FALSE;
+ 
+-  /* do not render cursor if it is not on any monitor. Such situation
+-   * can occur e. g. after monitor hot-plug */
+-  if (!is_cursor_in_monitors_area (priv->current_x, priv->current_y))
+-    return;
+-
+   if (cursor_sprite)
+     meta_cursor_sprite_prepare_at (cursor_sprite,
+                                    priv->current_x,
+diff --git a/src/core/screen.c b/src/core/screen.c
+index 19f7db5..7e098d7 100644
+--- a/src/core/screen.c
++++ b/src/core/screen.c
+@@ -1267,7 +1267,8 @@ root_cursor_prepare_at (MetaCursorSprite *cursor_sprite,
+   monitor = meta_screen_get_monitor_for_point (screen, x, y);
+ 
+   /* Reload the cursor texture if the scale has changed. */
+-  meta_cursor_sprite_set_theme_scale (cursor_sprite, monitor->scale);
++  if (monitor)
++    meta_cursor_sprite_set_theme_scale (cursor_sprite, monitor->scale);
+ }
+ 
+ static void
+diff --git a/src/wayland/meta-wayland-pointer.c b/src/wayland/meta-wayland-pointer.c
+index 894a64d..651e38b 100644
+--- a/src/wayland/meta-wayland-pointer.c
++++ b/src/wayland/meta-wayland-pointer.c
+@@ -823,8 +823,9 @@ cursor_sprite_prepare_at (MetaCursorSprite *cursor_sprite,
+   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);
++      if (monitor)
++        meta_cursor_sprite_set_texture_scale (cursor_sprite,
++                                              (float)monitor->scale / surface->scale);
+     }
+   meta_wayland_surface_update_outputs (surface);
+ }
+-- 
+2.7.0
+

Modified: desktop/unstable/mutter/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/mutter/debian/patches/series?rev=47513&op=diff
==============================================================================
--- desktop/unstable/mutter/debian/patches/series	[utf-8] (original)
+++ desktop/unstable/mutter/debian/patches/series	[utf-8] Tue Mar 15 06:53:20 2016
@@ -1 +1,2 @@
 01_Wcast-align.patch
+02_Handle-meta_screen_get_monitor_for_point-returning-N.patch




More information about the pkg-gnome-commits mailing list