From 94036de887ad5b0dc805abe38b5c1c58b57d9465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= Date: Tue, 11 Mar 2014 17:49:00 +0200 Subject: [PATCH] logind: Do not fail display count if a device has no parent udev_device_get_parent() may return NULL when the device doesn't have a parent, as is the case with (for example) /sys/devices/virtual/drm/ttm. Also, log an actual error message instead of "-12 displays connected". --- src/login/logind-action.c | 4 +++- src/login/logind-core.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git src/login/logind-action.c src/login/logind-action.c index ae7b350..1928f43 100644 --- src/login/logind-action.c +++ src/login/logind-action.c @@ -84,7 +84,9 @@ int manager_handle_action( * treat like this under the assumption that there is * no modern drm driver available. */ n = manager_count_displays(m); - if (n != 1) { + if (n < 0) + log_warning("Display counting failed: %s", strerror(-n)); + else if (n != 1) { log_debug("Ignoring lid switch request, %i displays connected.", n); return 0; } diff --git src/login/logind-core.c src/login/logind-core.c index ca34d37..053d2ed 100644 --- src/login/logind-core.c +++ src/login/logind-core.c @@ -520,7 +520,7 @@ int manager_count_displays(Manager *m) { p = udev_device_get_parent(d); if (!p) - return -ENOMEM; + continue; /* If the parent shares the same subsystem as the * device we are looking at then it is a connector, -- 1.7.9.2