[systemd-devel] [PATCH] logind: Do not fail display count if a device has no parent
Lennart Poettering
lennart at poettering.net
Tue Mar 11 09:46:15 PDT 2014
On Tue, 11.03.14 17:49, Mantas Mikulėnas (grawity at gmail.com) wrote:
Applied! Thanks!
> 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 a/src/login/logind-action.c b/src/login/logind-action.c
> index ae7b350..1928f43 100644
> --- a/src/login/logind-action.c
> +++ b/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 a/src/login/logind-core.c b/src/login/logind-core.c
> index ca34d37..053d2ed 100644
> --- a/src/login/logind-core.c
> +++ b/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,
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list