[mutter/gnome-3-34] kms-impl-device: Clean up state if drm resources disappear



commit 7655a63af6b27fab28aa1f7f3595f8cc055d56cf
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Mar 11 10:46:48 2020 +0000

    kms-impl-device: Clean up state if drm resources disappear
    
    It may happen that drmModeGetResources() starts returning NULL. Handle
    this gracefully by removing all connectors, CRTCs and planes making the
    device in practice defunct.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1121
    
    
    (cherry picked from commit 5319949a45bb22f5c998b485e955c1ddd13810f3)

 src/backends/native/meta-kms-impl-device.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
---
diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c
index 922aca103..f1d78eaa1 100644
--- a/src/backends/native/meta-kms-impl-device.c
+++ b/src/backends/native/meta-kms-impl-device.c
@@ -326,6 +326,16 @@ meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
   meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
 
   drm_resources = drmModeGetResources (impl_device->fd);
+  if (!drm_resources)
+    {
+      g_list_free_full (impl_device->planes, g_object_unref);
+      g_list_free_full (impl_device->crtcs, g_object_unref);
+      g_list_free_full (impl_device->connectors, g_object_unref);
+      impl_device->planes = NULL;
+      impl_device->crtcs = NULL;
+      impl_device->connectors = NULL;
+      return;
+    }
 
   update_connectors (impl_device, drm_resources);
 


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