[mutter/gnome-3-34] cursor-renderer/native: Handle GPU hotplug



commit a5b5e95ad948e6cf7aafded66040bb35c156d617
Author: Pekka Paalanen <pekka paalanen collabora com>
Date:   Mon Feb 24 15:36:24 2020 +0200

    cursor-renderer/native: Handle GPU hotplug
    
    Listen for GPU hotplug events to initialize their cursor support.
    
    This fixes one reason for why DisplayLink devices may not be using a hardware
    cursor. Particularly, when a DisplayLink device is hotplugged for the first
    time such that EVDI creates a new DRM device node after gnome-shell has already
    started, we used to forget to initialize the cursor support.
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/1097
    (cherry picked from commit 8abdf16a3992e3332f2378ea7c65e6e251e418e0)

 src/backends/native/meta-cursor-renderer-native.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
---
diff --git a/src/backends/native/meta-cursor-renderer-native.c 
b/src/backends/native/meta-cursor-renderer-native.c
index 6c53a2a8b..b14574c01 100644
--- a/src/backends/native/meta-cursor-renderer-native.c
+++ b/src/backends/native/meta-cursor-renderer-native.c
@@ -2,6 +2,7 @@
 
 /*
  * Copyright (C) 2014 Red Hat
+ * Copyright 2020 DisplayLink (UK) Ltd.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -1205,6 +1206,13 @@ init_hw_cursor_support_for_gpu (MetaGpuKms *gpu_kms)
     }
 }
 
+static void
+on_gpu_added_for_cursor (MetaBackend *backend,
+                         MetaGpuKms  *gpu_kms)
+{
+  init_hw_cursor_support_for_gpu (gpu_kms);
+}
+
 static void
 init_hw_cursor_support (MetaCursorRendererNative *cursor_renderer_native)
 {
@@ -1238,6 +1246,8 @@ meta_cursor_renderer_native_new (MetaBackend *backend)
   g_signal_connect_object (monitor_manager, "monitors-changed-internal",
                            G_CALLBACK (on_monitors_changed),
                            cursor_renderer_native, 0);
+  g_signal_connect (backend, "gpu-added",
+                    G_CALLBACK (on_gpu_added_for_cursor), NULL);
 
   priv->backend = backend;
   priv->hw_state_invalidated = TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]