[mutter] backend: Only try to center pointer when there not headless
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backend: Only try to center pointer when there not headless
- Date: Wed, 30 Aug 2017 05:55:11 +0000 (UTC)
commit a119e5877367204a29823ff3d5e480a98010f695
Author: Jonas Ådahl <jadahl gmail com>
Date: Wed Apr 12 14:09:58 2017 +0800
backend: Only try to center pointer when there not headless
Don't attempt to center the pointer when there is nothing to center on.
https://bugzilla.gnome.org/show_bug.cgi?id=730551
src/backends/meta-backend.c | 20 +++++++++++++++-----
src/backends/meta-monitor-manager.c | 2 +-
2 files changed, 16 insertions(+), 6 deletions(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index ba293b6..faa8d6f 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -100,6 +100,8 @@ struct _MetaBackendPrivate
ClutterBackend *clutter_backend;
ClutterActor *stage;
+ gboolean is_pointer_position_initialized;
+
guint device_update_idle_id;
GHashTable *device_monitors;
@@ -185,10 +187,14 @@ meta_backend_monitors_changed (MetaBackend *backend)
if (clutter_input_device_get_coords (device, NULL, &point))
{
/* If we're outside all monitors, warp the pointer back inside */
- if (!meta_monitor_manager_get_logical_monitor_at (monitor_manager,
- point.x, point.y) &&
+ if ((!meta_monitor_manager_get_logical_monitor_at (monitor_manager,
+ point.x, point.y) ||
+ !priv->is_pointer_position_initialized) &&
!meta_monitor_manager_is_headless (monitor_manager))
- center_pointer (backend);
+ {
+ center_pointer (backend);
+ priv->is_pointer_position_initialized = TRUE;
+ }
}
meta_settings_update_ui_scaling_factor (priv->settings);
@@ -456,8 +462,6 @@ meta_backend_real_post_init (MetaBackend *backend)
priv->input_settings = meta_backend_create_input_settings (backend);
- center_pointer (backend);
-
#ifdef HAVE_REMOTE_DESKTOP
priv->dbus_session_watcher = g_object_new (META_TYPE_DBUS_SESSION_WATCHER, NULL);
if (is_screen_cast_enabled (backend))
@@ -465,6 +469,12 @@ meta_backend_real_post_init (MetaBackend *backend)
if (is_remote_desktop_enabled (backend))
priv->remote_desktop = meta_remote_desktop_new (priv->dbus_session_watcher);
#endif /* HAVE_REMOTE_DESKTOP */
+
+ if (!meta_monitor_manager_is_headless (priv->monitor_manager))
+ {
+ center_pointer (backend);
+ priv->is_pointer_position_initialized = TRUE;
+ }
}
static MetaCursorRenderer *
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 1dd7c20..404dbcd 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -355,7 +355,7 @@ meta_monitor_manager_is_lid_closed (MetaMonitorManager *manager)
gboolean
meta_monitor_manager_is_headless (MetaMonitorManager *manager)
{
- return !manager->monitors;
+ return !manager->logical_monitors;
}
float
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]